资源描述
矩阵创建相关函数
cat函数
语法说明:A = cat(n,A1,A2,… ,Am)
功能介绍:创建多维数组
实例:
>> A1 = [1 2 3; 4 5 6; 7 8 9];A2 = A1'; A3 = A1 - A2;
>> A4 = cat(3, A1, A2, A3)
A4(:,:,1) =
1 2 3
4 5 6
7 8 9
A4(:,:,2) =
1 4 7
2 5 8
3 6 9
A4(:,:,3) =
0 -2 -4
2 0 -2
4 2 0
n = 3是构造三维数组,n = 1和2分别构造[A1;A2]以及[A1,A2],都是二维数组。
eye函数
功能介绍:单位矩阵生成
语法说明:
² Y = eye(n),生成n*n单位矩阵
² Y = eye(m, n),生成m*n单位矩阵
² Y = eye(sizes(A)),生成与矩阵A相同大小的单位矩阵
实例:
>> n = 3; m = 5;
>> Y1 = eye(n)
Y1 =
1 0 0
0 1 0
0 0 1
>> Y2 = eye(m, n)
Y2 =
1 0 0
0 1 0
0 0 1
0 0 0
0 0 0
ones函数
功能介绍:全1矩阵生成
语法说明:
² Y=ones(n):生成n*n全1矩阵
² Y =one(m,n):生成m*n全1矩阵
² Y=ones([m,n]):生成m*n全1矩阵
² Y=ones(d1,d2,d3):生成d1*d2*d3全1矩阵
² Y=ones([d1,d2,d3]):生成d1*d2*d3全1矩阵
² Y=ones(size(A)):生成与矩阵A相同大小的全1矩阵
strcmp函数
功能介绍:字符串比较函数
语法说明:
² Y=strcmp(str1,str2):比较两个字符串是否相等,返回值是0或者‘==’也是比较前后两个字符串,且要求前后两个字符串长度相同,但是是每个位置都进行比较。返回的一般是一个数组
实例:
>> D = strcmp('hello', 'Hello')
D =
0
>> D = strcmp('Hello','Hello')
D =
1
>> D = ('hello' == 'world')
D =
0 0 0 1 0
>> D = strcmp('he', 'hell')
D =
0
findstr函数
功能介绍:字符串查找
语法说明:
² Y=findstr(String, str):在String中查找str所在位置,返回一数字或数组
实例:
>> String = 'Peter Piper picked a peck of pickled pepers';
>> Y = findstr(String, ' ')
Y =
6 12 19 21 26 29 37
>> Y = findstr(String, 'p')
Y =
9 13 22 30 38 40
>> Y = findstr(String, 'cow')
Y =
[]
>> Y = findstr(String, 'pick')
Y =
13 30
strrep函数
功能介绍:字符串替换函数
语法说明:
² Y=strrep(String,str1,str2):将String中str1替换为str2,str1和str2长度可以不相同
实例:
>> String = 'Peter Piper picked a peck of pickled pepers';
>> Y = strrep(String, 'Peter', 'Sabrina')
Y =
Sabrina Piper picked a peck of pickled pepers
linspace函数
功能介绍:线性等分向量生成
语法说明:
² Y=linspace(a,b):在(a,b)上生成100个线性等分点
² Y=linspace(a,b,n):在(a,b)上生成n个线性等分点
实例:
>> Y = linspace(1,100)
>> Y=linspace(1,100,5)
Y =
1.0000 25.7500 50.5000 75.2500 100.0000
logspace函数
功能介绍:生成对数等分向量
语法说明:
² Y=logspace(a,b):在之间产生50个对数等分向量
² Y=logspace(a,b,n):在之间产生n个对数等分向量
实例:
>> Y = logspace(2, 4)
>> Y = logspace(2, 4, 5)
dot函数
功能介绍:向量点积
语法说明:
² Y=dot(A,B):同维向量A,B的点积
blkdiag函数
功能介绍:特殊矩阵
语法说明:
² Y = blkdiag(a,b,c):产生以a,b,c为对角线元素的矩阵
实例:
>> Y = blkdiag(1, 2, 3, 4)
Y =
1 0 0 0
0 2 0 0
0 0 3 0
0 0 0 4
compan函数
功能介绍: 生成友矩阵
语法说明:
² A=company(u):u为多项式系统向量,A为友矩阵,A的特征值就是是多项式的特征根
实例:求多项式(x-1)(x+2)(x-3)=x^3 -8x+13的友矩阵和根
>> u = [1 0 -8 13]
u =
1 0 -8 13
>> A = compan(u)
A =
0 8 -13
1 0 0
0 1 0
hankel函数
功能介绍:生成Hankel方阵
语法说明:
² H =hankel(c):第一列元素是c,反三角一下元素为0
² H=hankel(c,r):第一列元素是c,最后一行元素是r,交叉位置去c对应位置
实例:
>> c=1:1:4;
>> r=5:1:10;
>> h = hankel(c,r)
h =
1 2 3 4 6 7
2 3 4 6 7 8
3 4 6 7 8 9
4 6 7 8 9 10
hilb函数
功能介绍:生成Hilbert矩阵
语法说明:
² H = hilb(n):n阶希尔伯特矩阵
实例:
>> H = hilb(3)
H =
1.0000 0.5000 0.3333
0.5000 0.3333 0.2500
0.3333 0.2500 0.2000
invhilb函数
功能介绍:逆Hilbert矩阵
语法说明:
² H = invhilb(n):产生n阶逆Hilbert整数矩阵
实例:
>> H = invhilb(3)
H =
9 -36 30
-36 192 -180
30 -180 180
pascal函数
功能介绍:生成Pascal矩阵
语法说明:
² A=pascal(n):产生n阶Pascal矩阵,它是对称、正定矩阵,它的元素由Pascal三角组成,它的逆矩阵的所有元素都是整数
² A=pascal(n,1):返回由下三角的Cholesky系数组成的Pascal矩阵
² A=pascal(n,2):返回Pascal(n,1)的转置和交换的形式
实例:
>> A = pascal(3)
A =
1 1 1
1 2 3
1 3 6
>> A = pascal(3, 1)
A =
1 0 0
1 -1 0
1 -2 1
>> A = pascal(3, 2)
A =
1 1 1
-2 -1 0
1 0 0
toeplitz函数
功能介绍:生成拓普利兹矩阵(除第一行和第一列外,其他元素都和左上角的元素相同)
语法说明:
² T=toeplitz(c,r):生成一个非对称的拓普利兹矩阵,将c作为第一列,将r作为第一行,其余元素与左上角相邻元素相等
² T=toeplitz(c):用向量c生成一个对称的拓普利兹矩阵
实例:
>> c = [1 2 3 4 5];
>> r = [1.3 2.4 3.5 4.6 5.6];
>> T = toeplitz(c, r)
T =
1.0000 2.4000 3.5000 4.6000 5.6000
2.0000 1.0000 2.4000 3.5000 4.6000
3.0000 2.0000 1.0000 2.4000 3.5000
4.0000 3.0000 2.0000 1.0000 2.4000
5.0000 4.0000 3.0000 2.0000 1.0000
rand函数
功能介绍: 生成0~1间均匀分布的随机矩阵
语法说明:
² R=rand(n):产生维数为n*n的0~1间均匀分布的随机矩阵
² R=rand(m,n):产生维数为m*n的0~1间均匀分布的随机矩阵
² R=rand(m,n,p):
² R=rand(size(A)):产生维数和A相同的~~~
实例:
>> B = rand(3)
B =
0.6991 0.5472 0.2575
0.8909 0.1386 0.8407
0.9593 0.1493 0.2543
>> C = rand(3, 4)
C =
0.8143 0.3500 0.6160 0.8308
0.2435 0.1966 0.4733 0.5853
0.9293 0.2511 0.3517 0.5497
>> D = rand(size(C))
D =
0.9172 0.7537 0.0759 0.7792
0.2858 0.3804 0.0540 0.9340
0.7572 0.5678 0.5308 0.1299
randn函数
功能介绍:标准正态分布随机函数
语法说明:用法类似rand函数
实例:类似rand函数
vander函数
功能介绍:生成范德蒙矩阵
语法说明:
² A=vander(v):其中v是一个向量,矩阵的列是v的幂
实例:
>> A = vander([5, 2, 3, 4])
A =
125 25 5 1
8 4 2 1
27 9 3 1
64 16 4 1
prod函数
功能介绍:矩阵元素求积
语法说明:
² B=prod(A):对矩阵A的元素求积,返回矩阵A各列元素的积组成的向量
² B=prod(A,dim):返回给定维数dim上元素的积,dim为1时,计算矩阵A各列元素的积,当dim为2时,计算A各行元素的积
实例:
A =
8 1 6
3 5 7
4 9 2
>> B = prod(A)
B =
96 45 84
>> C = prod(A, 2)
C =
48
105
72
cumprod函数
功能介绍:类似sum
语法说明:
² B=cumprod(A),B=cumprod(A,2)
实例:
A =
8 1 6
3 5 7
4 9 2
>> E = cumprod(A)
E =
8 1 6
24 5 42
96 45 84
>> D = cumprod(A, 2)
D =
8 8 48
3 15 105
4 36 72
norm函数
功能介绍:矩阵范数(当矩阵维数较大时,用normest函数)
语法说明:
² N=norm(x,p):对任意大于1的p值,返回向量x的p阶范数
² N=norm(x):返回向量x的2阶范数,相当于N=norm(x,2)
² N=norm(x,inf):返回向量x的无穷阶范数,相当于max(abs(x))
² N=norm(x,-inf):返回向量x的负无穷阶范数,相当于min(abs(x))
² N=norm(A):计算矩阵的2阶范数,也就是最大奇异值
² N=norm(A,p):当p=1时,求矩阵A的1阶范数,相当于max(sum(abs(A)));当p=2时,计算矩阵A的2阶范数,相当于norm(A);当p=inf时,计算矩阵A的无穷阶范数,相当于计算max(sum(abs(A’)));当p=pro时,计算矩阵A的F范数,相当于sqrt(sum(diag(A’*A)))
实例:
>> A = [1 2 3; 3 4 5; 7 8 9];
>> B = norm(A, 1)
B =
17
>> B = norm(A)
B =
16.0216
>> B = norm(A,inf)
B =
24
>> B = norm(A,'fro')
B =
16.0624
rank函数
功能介绍:矩阵的秩
语法说明:
² rank(A):用默认允许误差计算矩阵的秩
² rank(A,tol):给定误差计算矩阵的秩,tol=max(size(A))·eps(norm(A))
实例:
det函数
功能介绍:矩阵的行列式
语法说明:det(A)
实例:
trace函数
功能介绍:矩阵的迹
语法说明:trace(A)
实例:
矩阵分解相关函数
chol函数
功能介绍:对称正定阵的Cholesky分解(用来求解线性方程组)
语法说明:
² 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
实例:
>> A = pascal(4)
A =
1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20
>> eig(A)//通过A的特征值,来验证A矩阵是正定的
ans =
0.0380
0.4538
2.2034
26.3047
>> R = chol(A)
R =
1 1 1 1
0 1 2 3
0 0 1 3
0 0 0 1
lu函数
功能介绍:矩阵的LU分解
语法说明:
² [L,U]=lu(X):X是一个方阵,L为下三角矩阵的置换矩阵,U为上三角,满足X=LU
² [L,U,P]=lu(X):X是一个方阵,L是下三角,U为上三角,P是置换矩阵,满足条件PX=LU
² Y=lu(X):X为一个方阵,把上三角矩阵和下三角矩阵合并在矩阵Y中给出,矩阵Y的对角元素为上三角矩阵的对角元素,也即Y=L+U-I
【注】考虑线性方程组Ax=b,对矩阵A可以做LU分解,使得A=LU,这样方程组改写成LUx=b,于是x=U\(L\b)。也可以计算A的行列式:det(A)=det(L)*det(U)。inv(A)=inv(U)*inv(L)。
实例:
>> A = [2 4 5; 8 9 6; 1 3 5];
>> [L1, U1] = lu(A)
L1 =
0.2500 0.9333 1.0000
1.0000 0 0
0.1250 1.0000 0
U1 =
8.0000 9.0000 6.0000
0 1.8750 4.2500
0 0 -0.4667
>> [L2, U2, P] = lu(A)
L2 =
1.0000 0 0
0.1250 1.0000 0
0.2500 0.9333 1.0000
U2 =
8.0000 9.0000 6.0000
0 1.8750 4.2500
0 0 -0.4667
P =
0 1 0
0 0 1
1 0 0
qr函数
功能介绍:矩形矩阵的正交分解(QR分解)
语法说明:
² [Q,R]=qr(A):其中R为与矩阵A具有相同大小的上三角矩阵,Q为正交矩阵。它们满足A=QR,该调用方式适用于满矩阵和稀疏矩阵。
² [Q,R]=qr(A,0):为“经济”方式的QR分解。设矩阵A是一个m*n的矩阵,若m>n,则只计算矩阵Q的钱n列元素,R为n*n的矩阵;若m<=n,则与[Q,R]=qr(A)效果一样,该调用方式适用于满矩阵和稀疏矩阵。
² [Q,R,E]=qr(A):R是上三角矩阵,Q是正交矩阵,E是置换矩阵。他们满足AE=QR,程序选择一个合适的矩阵E似的abs(diag(R))是降序排列的。该调用方式适用于满矩阵。
² [Q,R,E]=qr(A,0):“经济”方式的QR分解,其中E是一个置换矢量。他们满足A(:,E)=QR。该调用方式适用于满矩阵。
² R=qr(A):返回上三角矩阵R,这里R=chol(A’A)。该调用方式适用于稀疏矩阵。
² R=qr(A,0):以“经济”方式返回上三角矩阵R。
² [C,R]=qr(A,B):其中矩阵B必须与矩阵A具有相通的行数,矩阵R是上三角矩阵,C=Q’B。
实例:
>> A = [2 4 5; 8 9 6; 1 3 5];
>> [Q1, R1] = qr(A)
Q1 =
0.2408 0.6424 -0.7276
0.9631 -0.2511 0.0970
0.1204 0.7241 0.6791
R1 =
8.3066 9.9920 7.5843
0 2.4818 5.3257
0 0 0.3395
schur函数
功能介绍:方阵的舒尔分解
语法说明:
【说明】A=USU’。其中A是方阵,U是一个酉矩阵,S是一个块对角化矩阵,对角线上的1*1和2*2块组成。特征值可以由矩阵S的对角块给出,而矩阵U给出比特征向量更多的数值特征。
² [U,S]=schur(A):返回酉矩阵U和块对角化矩阵S。
² S=schur(A):仅返回块对角矩阵S。
² schur(A,’real’):返回的实特征值放在对对角线上,而把复特征值放在对角上的2*2块中
² schur(A,’complex’):返回矩阵的S是上三角矩阵,并且如果矩阵A是复特征值,则矩阵S是复矩阵。
实例:
>> A = pascal(5);
>> [U, S] = schur(A)
U =
0.1680 -0.5706 -0.7660 0.2429 0.0175
-0.5517 0.5587 -0.3830 0.4808 0.0749
0.7025 0.2529 0.1642 0.6110 0.2055
-0.4071 -0.5179 0.4377 0.4130 0.4515
0.0900 0.1734 -0.2189 -0.4074 0.8649
S =
0.0108 0 0 0 0
0 0.1812 0 0 0
0 0 1.0000 0 0
0 0 0 5.5175 0
0 0 0 0 92.2904
eig函数
功能介绍:矩阵特征值与特征向量
语法说明:
² eig(A):求包含矩阵A的特征值的向量
² [X,D]=eig(A):产生一个矩阵A的特征值与特征向量,D对角线上元素就是A的特征值,X的列是相应的特征向量,即满足AX=XD
² eig(A,’nobalance’):不经过处理求的矩阵A的特征值和特征向量,也就是不进行平衡相似变换
实例:
>> A = [0.8 0.2; 0.2 0.8];
>> [X, D] = eig(A)
X =
-0.7071 0.7071
0.7071 0.7071
D =
0.6000 0
0 1.0000
稀疏矩阵相关函数
sparse函数
功能介绍:稀疏矩阵的创建
语法说明:
² S=sparse(A):将矩阵A转化为稀疏矩阵形式,即由A的非零元素和下标构成稀疏矩阵S。若A本身就是稀疏矩阵,则返回A
² S=sparse(m,n):生成m*n的所有元素都是零的稀疏矩阵
² S=sparse(i,j,s):生成一个由长度相同的向量i、j和s定义的稀疏矩阵S。其中i,j是整数向量,第一稀疏矩阵的元素位置(i,j),s是一个实数或者与i,j长度相同的向量,表示在(i,j)位置上的元素。
² S=sparse(i,j,s,m,n):生成一个m*n的稀疏矩阵,(i,j)对应位置元素为s。i,j,s长度必须相同
【注】
nnz(S):查看非零元素个数
nonzeros(S):非零元素的值
nzmax(S):查看稀疏矩阵的存储空间
实例:
>> S = sparse(1:10, 1:10, 8)
S =
(1,1) 8
(2,2) 8
(3,3) 8
(4,4) 8
(5,5) 8
(6,6) 8
(7,7) 8
(8,8) 8
(9,9) 8
(10,10) 8
>> S = sparse([1, 2, 3, 4, 5], [2, 1, 4, 6, 2], [10, 3, -2, -5, 1], 10, 12)
S =
(2,1) 3
(1,2) 10
(5,2) 1
(3,4) -2
(4,6) -5
full函数
功能介绍:将稀疏矩阵转化为满矩阵
语法说明:
² A=full(S)
实例:
>> S = sparse([1, 2, 3, 4, 5], [2, 1, 4, 6, 2], [10, 3, -2, -5, 1], 5, 6)
S =
(2,1) 3
(1,2) 10
(5,2) 1
(3,4) -2
(4,6) -5
>> A = full(S)
A =
0 10 0 0 0 0
3 0 0 0 0 0
0 0 0 -2 0 0
0 0 0 0 0 -5
0 1 0 0 0 0
spconvert函数
功能介绍:外部数据转化为稀疏矩阵
语法说明:
² S=spconvert(D):D共有3列,第一列为行下标,第二列为列下标,最后一列为元素值
实例:
>> A = [1 2 3; 2 5 4; 3 4 6; 3 6 7]
A =
1 2 3
2 5 4
3 4 6
3 6 7
>> S = spconvert(A)
S =
(1,2) 3
(3,4) 6
(2,5) 4
(3,6) 7
find函数
功能介绍:稀疏矩阵非零元素的索引
语法说明:
² [i,j,k]=find(S):检索S中非零元素的行标i和列标j以及对应元素值v
实例:
>> A = [1 2 3; 2 5 4; 3 4 6; 3 6 7];
>> S = spconvert(A)
S =
(1,2) 3
(3,4) 6
(2,5) 4
(3,6) 7
>> [i, j, k] = find(S)
i =
1
3
2
3
j =
2
4
5
6
k =
3
6
4
7
speye函数
功能介绍:单位稀疏矩阵
语法说明:
² S=speye(m,n):生成m*n的单位稀疏矩阵
² S=speye(n):生成n*n的单位稀疏矩阵
实例:
spones函数
功能介绍:创建非零元素是1的稀疏矩阵
语法说明:
² S=spones(X):创建X结构的非零元素是1的稀疏矩阵
实例:
spdiags函数
功能介绍:创建对角或带状稀疏矩阵
语法说明:
² [B,d]=spdiags(A):从矩阵A中取出所有非零对角元素,并保存到矩阵B中,向量d表示非零元素对角线位置
² B=spdiags(A,d):从A中取出由d指定的对角线元素,并保存在B中。
【注】上述d,主对角线取0,主对角线一下的取负值,主对角线以上的取正值
展开阅读全文