一、数组的创建和操作
1.矩阵的输入
>> A=[]
A =
[]
>> B=[6 5 3]
B =
6 5 3
>> C=B'
C =
6
5
3
2.调用矩阵
>> A=[1 2 3 4 5]
A =
1 2 3 4 5
>> a1=A(1)%访问数组第一个元素
a1 =
1
>> a2=A(1:3)%访问数组第1、2、3个元素
a2 =
1 2 3
>> a3=A(3:end)%访问数组第3个到最后一个元素
a3 =
3 4 5
>> a4=A(end:-1:1)%数组元素反序输出
a4 =
5 4 3 2 1
>> a5=A([1 5])%访问数组第1个及第5个元素
a5 =
1 5
3.子数组的赋值
>>
A=[1 2 3 4 5]
A(3)=5
A([1 4])=[1 1]
A =
1 2 3 4 5
A =
1 2 5 4 5
A =
1 2 5 1 5
二、MATLAB常用矩阵函数
1. 矩阵的构造与操作
zeros 生成元素全为0的矩阵
>> zeros(3:3)
ans =
0 0 0
0 0 0
0 0 0
ones 生成元素全为1的矩阵
>> ones(2:2)
ans =
1 1
1 1
eye 生成单位矩阵
>> eye(2:2)
ans =
1 0
0 1
rand 生成随机矩阵
>> rand(3:3)
ans =
0.8147 0.9134 0.2785
0.9058 0.6324 0.5469
0.1270 0.0975 0.9575
fliplr | 矩阵左右翻转 |
flipud | 矩阵上下翻转 |
triu | 矩阵的上三角部分 |
tril | 矩阵的下三角部分 |
diag | 对角矩阵 |
full | 将稀疏矩阵化为普通矩阵 |
sparse | 生成稀疏矩阵 |
randn | 生成正态分布随机矩阵 |
2. 矩阵运算函数
subspace | 计算两个子空间的夹角 |
rref | 矩阵的行最简形(初等行变换求解线性方程组) |
orth | 正交规范化 |
null | 求基础解系(矩阵的零空间) |
trace | 方阵的迹%特征值的和等于迹 |
det | 方阵的行列式 |
rank | 矩阵的秩 |
normest | 稀疏矩阵(或大规模矩阵)的2-范数估计 |
norm | 矩阵或向量范数 |
3. 与线性方程有关的矩阵运算函数
pinv | 矩阵的广义逆 |
qr | 矩阵的正交三角分解 |
luinc | 稀疏矩阵的不完全LU分解 |
ilu | 稀疏矩阵的不完全LU分解 |
lu | 矩阵的LU分解 |
linsolve | 矩阵方程组的求解 |
cholinc | 稀疏矩阵的不完全Cholesky分解 |
chol | 矩阵的Cholesky分解(矩阵的平方根分解) |
condest | 稀疏矩阵1-范数的条件数估计 |
cond | 方阵的条件数 |
inv | 方阵的逆 |
4. 与特征值或奇异值有关的矩阵函数
eig | 方阵的特征值与特征向量 |
svd | 矩阵的奇异值分解 |
eigs | 稀疏矩阵的一些(默认6个)最大特征值与特征向量 |
svds | 矩阵的一些(默认6个)最大奇异值与向量 |
hess | 方阵的Hessenberg形式分解 |
schur | 方阵的Schur分解 |
三、数组的常见运算
1.数组的算术运算
dot数组的点积
sum数组元素的乘积之和
>> A=[1 2 3];
>> B=[4 5 6];
>> C=dot(A,B)
C =
32
>> D=sum(A.*B)
D =
32
2.数组的关系运算
关系运算的运算法则如下:
当两个比较量是标量时,直接比较两个数的大小。若关系成立,则返回的结果为1,否则为0。
当两个比较量是维数相等的数组时,逐一比较两个数组相同位置的元素,并给出比较结果。最终的关系运算结果是一个与参与比较的数组维数相同的数组,其组成元素为0或1。
>>
A=[1 2 3 5 7]
B=[2 3 5 5 8]
A<6
A>B
F=A==B
A =
1 2 3 5 7
B =
2 3 5 5 8
ans =
1×5 logical 数组
1 1 1 1 0
ans =
1×5 logical 数组
0 0 0 0 0
F =
1×5 logical 数组
0 0 0 1 0
3.数组的逻辑运算
在 MATLAB中数组提供了3种数组逻辑运算符,即&(与)、|(或)和~(非)。逻辑运算的运算法则如下:
如果是非零元素则为真,用1表示;反之是零元素则为假,用0表示。
当两个比较量是维数相等的数组时,逐一比较两个数组相同位置的元素,并给出比较结果。最终的关系运算结果是一个与参与比较的数组维数相同的数组,其组成元素为0或1。
与运算(a&b)时,a、b全为非零,则为真,运算结果为1;或运算(ab)时,只要a、b有一个为非零,则运算结果为1;非运算(~a)时,若a为0,运算结果为1,a为非零,运算结果为0。
>>
C=A&B %与
D=A|B %或
E=~B %非
C =
1×5 logical 数组
1 1 1 1 1
D =
1×5 logical 数组
1 1 1 1 1
E =
1×5 logical 数组
0 0 0 0 0
四、矩阵操作
1.创建矩阵
compan(p):生成一个特征多项式为p的二维矩阵
hadamard(k):返回一个阶数为n=2k的Hadamard矩阵,只有当n能被4整除时Hadamard矩阵才存在
hankel(x):返回一个由向量x定义的 Hankel方阵。该矩阵是一个对称矩阵,其元素为h一x+j-a,第1列为向量x,反三角以下的元素为0
hankel(x,y):返回一个mXn的Hankel矩阵,它的第1列为向量x,最后一行为向量y
magic(n):返回一个nXn的魔方矩阵
pascal(n):返回一个n×n的Pascal矩阵
rosser:给出Rosser 矩阵,这是一个经典对称特征测试问题,它的大小是8×8
vander(x):返回一个Vandermonde矩阵,其元素为v,=x"',n为向量x的长度
wilkinson(n):返回一个m×n的-Wilkinson特征值测试矩阵
(1)希尔伯特矩阵
希尔伯特(Hilbert)矩阵,也称H阵,其元素为H(第i行第j列)/(i+j-1)。由于它是一个条件数差
的矩阵,所以将它用来作为试验矩阵。
关于希尔伯特矩阵的指令函数如下:
hilb(n):用于生成一个n×n的希尔伯特矩阵。
invhilb(n):用于生成一个nXn的希尔伯特矩阵的逆矩阵整数矩阵。
>> A=hilb(3)
A =
1.0000 0.5000 0.3333
0.5000 0.3333 0.2500
0.3333 0.2500 0.2000
>> B=invhilb(3)
B =
9 -36 30
-36 192 -180
30 -180 180
(2)托普利兹(Toeplitz)矩阵
另外一个比较重要的矩阵为托普利兹(Toeplitz)矩阵,它由两个向量定义,一个行向量和一个列向量。对称的托普利兹矩阵由单一向量来定义。
关于托普利兹矩阵的指令函数如下:
toeplitz(k,r):用于生成非对称托普利兹矩阵,第1列为k,第1行为r,其余元素等于其左上角元素。
(3)范德蒙行列式
>> A=vander([1 2 3 4])
A =
1 1 1 1
8 4 2 1
27 9 3 1
64 16 4 1
>> B=vander([1;2;3;4])
B =
1 1 1 1
8 4 2 1
27 9 3 1
64 16 4 1
>> C=vander(1:.5:3)
C =
1.0000 1.0000 1.0000 1.0000 1.0000
5.0625 3.3750 2.2500 1.5000 1.0000
16.0000 8.0000 4.0000 2.0000 1.0000
39.0625 15.6250 6.2500 2.5000 1.0000
81.0000 27.0000 9.0000 3.0000 1.0000
五、改变矩阵的大小
C=[A B]在水平方向合并矩阵A和B,而表达式C=[A B]在水平方向合并矩阵A和B,而表达式C=[A;B]在竖直方向合并矩阵A和B。
1.矩阵的合并
>> C=toeplitz(2:5,2:2:8)
C =
2 4 6 8
3 2 4 6
4 3 2 4
5 4 3 2
>> a=ones(3,4)
b=zeros(3,4)
c=[a;b]
d=[a b]
a =
1 1 1 1
1 1 1 1
1 1 1 1
b =
0 0 0 0
0 0 0 0
0 0 0 0
c =
1 1 1 1
1 1 1 1
1 1 1 1
0 0 0 0
0 0 0 0
0 0 0 0
d =
1 1 1 1 0 0 0 0
1 1 1 1 0 0 0 0
1 1 1 1 0 0 0 0
2.矩阵行列的删除
如果想删除矩阵的第二行
>> A=rand(4,4)
A =
0.7922 0.8491 0.7431 0.7060
0.9595 0.9340 0.3922 0.0318
0.6557 0.6787 0.6555 0.2769
0.0357 0.7577 0.1712 0.0462
>> A(2,:)=[]%删除矩阵的第二行
A =
0.7922 0.8491 0.7431 0.7060
0.6557 0.6787 0.6555 0.2769
0.0357 0.7577 0.1712 0.0462
六:矩阵元素的查找
1.ind=find(X) :查找矩阵X中的非零元素,函数返回这些元素的单下标。
>> A=[1 3 0;3 1 0;9 2 4]
A =
1 3 0
3 1 0
9 2 4
>> B=find(A)%矩阵中非零元素的下标
B =
1
2
3
4
5
6
9
>> C=find(A>=1)
C =
1
2
3
4
5
6
9
>> D=A(A>=1)%矩阵中大于等于1的元素
D =
1
3
9
3
1
2
4
>> A(find(A==0))=10%矩阵中等于0的元素改为10
A =
1 3 10
3 1 10
9 2 4
七、矩阵元素的排序
>> A=[1 3 0;3 1 0;9 2 4];
B=sort(A);
A=[1 3 0;3 1 0;9 2 4];
B=sort(A);%矩阵元素按照列进行升序排序
C=sort(A,2);%矩阵元素按照行进行升序排序
D=sort(A,'descend');%矩阵元素按照列进行降序排序
E=sort(A,2,'descend');%矩阵元素按照行进行降序排序
>> BCDE=[B C;D E]
BCDE =
1 1 0 0 1 3
3 2 0 0 1 3
9 3 4 2 4 9
9 3 4 3 1 0
3 2 0 3 1 0
1 1 0 9 4 2
八、矩阵元素的求和
>> clear all;
A=[1 3 0;3 1 0;9 2 4];
B=sum(A)%矩阵中元素按照列进行求和
C=sum(A,2)%矩阵中元素按照行进行求和
D=cumsum (A)%矩阵中各列元素的和
E=cumsum (A,2)%矩阵中各行元素的和
F=sum(sum (A))%矩阵中所有元素的和
B =
13 6 4
C =
4
4
15
D =
1 3 0
4 4 0
13 6 4
E =
1 4 4
3 4 4
9 11 15
F =
23
九、矩阵元素的求积
>> clear all;
A= magic(3)
B=prod (A)%矩阵各列元素的积
C=prod (A,2)%矩阵各行元素的积
D=cumprod (A)%矩阵各列元素的积
E=cumprod(A,2)%矩阵各行元素的积
A =
8 1 6
3 5 7
4 9 2
B =
96 45 84
C =
48
105
72
D =
8 1 6
24 5 42
96 45 84
E =
8 8 48
3 15 105
4 36 72
十、矩阵的分析
norm 矩阵或向量范数
normest 稀疏矩阵(或大规模矩阵)的2-范数估计
rank 矩阵的秩
det 方阵的行列式
trace 方阵的迹%特征值的和等于迹
null 求基础解系(矩阵的零空间)
orth 正交规范化
rref 矩阵的行最简形(初等行变换求解线性方程组)
subspace 计算两个子空间的夹角文章来源:https://www.toymoban.com/news/detail-401299.html
十一、矩阵的分析
chol:Cholesky分解:对称正定矩阵的 Cholesky 分解
Cholesky分解在MATLAB中用函数chol()来实现,其常用的调用方式如下:
R = chol(X):其中X为对称正定矩阵,R是上三角矩阵,使得 X=R'·R。如果X是非正定的,则结果将返回出错信息。
[R,p] = chol(X):返回两个参数,并且不会返回出错信息。当X是正定矩阵时,返回的上三角矩阵R满足X=-R'·R,且p=0;当X是非正定矩阵时,返回值p是正整数,R是上三角矩阵,其阶数为p-1,且满足X(1:p-1,1:p-1)=R -R
cholinc:稀疏矩阵的不完全 Cholesky分解
lu:矩阵LU分解
luinc:稀疏矩阵的不完全LU分解
qr:正交三角分解
svd:奇异值分解
gsvd:一般奇异值分解
schur:舒尔分解
文章来源地址https://www.toymoban.com/news/detail-401299.html
到了这里,关于MATLAB:矩阵(基础知识)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!