-- date: 2022/1/18
-- title: matlab的基础使用
-- author: longRookie
一、常用函数
1.1 创建矩阵
【函数说明】直接输入矩阵数值,分号代表行间隔,创建数值矩阵。
>> A=[1 3 5;2 4 6;7 8 9]
A =
1 3 5
2 4 6
7 8 9
1.2 zeros函数:创建全0矩阵
【函数说明】
\(\color{red}{\rightarrow}\) A=zeros(n): 创建\(n \times n\) 全0矩阵。
\(\color{red}{\rightarrow}\) A=zeros(n,m): 创建\(n \times m\)全0矩阵。
\(\color{red}{\rightarrow}\) A=zeros(size(B)): 创建与矩阵B相同大小的全0矩阵。
>> A=zeros(3);
>> A
A =
0 0 0
0 0 0
0 0 0
>> A=zeros(2,3);
>> A
A =
0 0 0
0 0 0
1.3 eye函数:创建单位矩阵
【函数说明】
\(\color{red}{\rightarrow}\) A=eye(n): 创建\(n\times n\)单位矩阵。
\(\color{red}{\rightarrow}\) A=eye(n,m): 创建$n\times m $单位矩阵。
\(\color{red}{\rightarrow}\) A=eye(size(B)): 创建与矩阵B相同大小的单位矩阵。
>> A=eye(3,4);
>> A
A =
1 0 0 0
0 1 0 0
0 0 1 0
1.4 ones函数:创建全1矩阵
【函数说明】
\(\color{red}{\rightarrow}\) A=ones(n): 创建\(n\times n\)全1矩阵。
\(\color{red}{\rightarrow}\) A=ones(n,m): 创建$n\times m $ 全1矩阵。
\(\color{red}{\rightarrow}\) A=ones(size(B)): 创建与矩阵B相同大小的全1矩阵。
>> A=ones(3);
>> A
A =
1 1 1
1 1 1
1 1 1
1.5 rand函数: 创建均匀分布随机函数
【函数说明】
\(\color{red}{\rightarrow}\) A=rand(n): 创建$n \times n $维均匀分布随机矩阵,其元素在(0,1)内
\(\color{red}{\rightarrow}\) A=rand(n,m): 创建$n\times m $ 均匀分布随机矩阵
\(\color{red}{\rightarrow}\) A=rand(size(B)): 创建与矩阵B相同大小的均匀分布随机矩阵
>> A = rand(4);
>> A
A =
0.8147 0.6324 0.9575 0.9572
0.9058 0.0975 0.9649 0.4854
0.1270 0.2785 0.1576 0.8003
0.9134 0.5469 0.9706 0.1419
>> A = rand(3,4);
>> A
A =
0.4218 0.9595 0.8491 0.7577
0.9157 0.6557 0.9340 0.7431
0.7922 0.0357 0.6787 0.3922
1.6 randn函数: 创建正态分布随机矩阵
【函数说明】
\(\color{red}{\rightarrow}\) A = randn(n): 创建\(n\times n\)正态随机矩阵。
\(\color{red}{\rightarrow}\) A=randn(n,m): 创建$n\times m $正态随机矩阵。
\(\color{red}{\rightarrow}\) A=randn(size(B)): 创建与矩阵B相同大小的正态分布随机矩阵。
>> A=randn(3,5);
>> A
A =
0.2939 -1.1471 -2.9443 -0.7549 -0.1022
-0.7873 -1.0689 1.4384 1.3703 -0.2414
0.8884 -0.8095 0.3252 -1.7115 0.3192
1.7 hankel函数:创建Hankel矩阵
【函数说明】
\(\color{red}{\rightarrow}\) A=hankel(n): 第一列元素为n,反三角以下元素为0。
\(\color{red}{\rightarrow}\) A=hankel(n,m): 第一列元素为m,最后一行元素为m,如果n的最后一个元素与m的第一个元素不同,则交叉位置取n的最后一个元素。
【矩阵说明】
汉克尔矩阵是指每一条逆对角线上的元素都相等的矩阵。
>> n = [3 2 1];
>> m = [1 5 9];
>> A = hankel(n,m);
>> A
A =
3 2 1
2 1 5
1 5 9
>> A=hankel(n);
>> A
A =
3 2 1
2 1 0
1 0 0
1.8 topelitz函数:创建Topelitz矩阵
【函数说明】
\(\color{red}{\rightarrow}\) A= toeplitz(n): 用向量n创建一个对称Toeplitz矩阵。
\(\color{red}{\rightarrow}\) A=topelitz(n,m):第一列元素为n,第一行元素为m,如果n的第一个元素与m的第一个元素不同,则交叉位置元素取n的第一个元素。
【矩阵说明】
托普利兹矩阵的主对角线上的元素相等,平行于主对角线的线上的元素也相等。
>> n=[1 2 3 4];
>> m = [1 5 8 9];
>> A=toeplitz(n);
>> A
A =
1 2 3 4
2 1 2 3
3 2 1 2
4 3 2 1
>> A=toeplitz(n,m);
>> A
A =
1 5 8 9
2 1 5 8
3 2 1 5
4 3 2 1
1.9 det函数:计算方阵行列式
【函数说明】
\(\color{red}{\rightarrow}\) det(A):计算方阵A的行列式
【注】
了解代数余子式
>> A=[1 3 6;2 4 5;1 2 3];
>> A
A =
1 3 6
2 4 5
1 2 3
>> det(A)
ans =
-1
1.10 inv函数:求方阵的逆矩阵
【函数说明】
\(\color{red}{\rightarrow}\) inv(A):计算方阵A的逆矩阵\(A^{-1}\)
【注】
了解伴随矩阵,\(A^{-1}=\frac{1}{|A|}A^*\)。
矩阵有逆的充要条件。
>> A= [1 3 6;2 4 5;1 2 3];
>> inv(A)
ans =
-2 -3 9
1 3 -7
0 -1 2
1.11 pinv函数:求矩阵的伪逆矩阵
【函数说明】
\(\color{red}{\rightarrow}\) pinv(A):计算矩阵A的伪逆矩阵\(A^+\)。
【矩阵说明】
与A的转置矩阵\(A^T\)同型,并且满足\(AXA=A,XAX=X\),此时矩阵X为矩阵A的伪逆矩阵。如果A为非奇异矩阵,pinv(A)=inv(A),但inv(A)花费时间更少。
>> A=[1 3 6;2 4 5;1 2 3;1 1 1];
>> pinv(A)
ans =
0.1579 -0.8421 0.3684 2.1579
-0.6842 1.3158 -0.2632 -1.6842
0.4737 -0.5263 0.1053 0.4737
1.12 rank函数:求矩阵的逆
【函数说明】
\(\color{red}{\rightarrow}\) rank(A):计算矩阵A的秩;
【注】
分为行秩和列秩;对应线性无关的最大行数和列数;
>> A=[1 3 6; 2 4 5; 1 2 3];
>> rank(A)
ans =
3
1.13 diag函数:抽取矩阵对角线元素
【函数说明】
\(\color{red}{\rightarrow}\) A=diag(m):以m为主对角线元素,其余元素为0。
\(\color{red}{\rightarrow}\) m=diag(A):取矩阵A的主对角线元素构造向量m。
>> A=[1 3 6;2 4 5;1 2 3];
>> m=diag(A)
m =
1
4
3
>> m=[1 2 3];
>> A=diag(m)
A =
1 0 0
0 2 0
0 0 3
1.14 fliplr函数:矩阵左右翻转
【函数说明】
\(\color{red}{\rightarrow}\) fliplr(A):将矩阵A左右翻转。
>> A=[1 3 6;2 4 5;1 2 3]
A =
1 3 6
2 4 5
1 2 3
>> fliplr(A)
ans =
6 3 1
5 4 2
3 2 1
1.15 eig函数:矩阵特征值分解
【函数说明】
\(\color{red}{\rightarrow}\) d = eig(A):计算A的特征值。
\(\color{red}{\rightarrow}\) d = eig(A,B):计算A的广义特征值。
\(\color{red}{\rightarrow}\) [V,D]=eig(A):计算A的特征值对角阵D和特征向量构成的矩阵V。
\(\color{red}{\rightarrow}\) [V,D]=eig(A,B):计算A的广义特征值对角阵D和广义特征向量构成的矩阵V。
【注】
A是n阶向量,如果存在数m和非零n维列向量x,使Ax=mx成立,则称m是矩阵A的一个特征值,非零向量x称为特征值\(\lambda\)的特征向量。
代数重数和几何重数
>> A=[1 3 6;2 4 5;1 2 3];
>> [V,D]=eig(A);
>> V
V =
-0.5970 -0.9433 0.6669
-0.7083 0.3209 -0.6977
-0.3767 0.0847 0.2615
>> D
D =
8.3451 0 0
0 -0.5594 0
0 0 0.2142
>>
1.16 svd函数:矩阵奇异值分解
【函数说明】
\(\color{red}{\rightarrow}\) s=svd(A):计算矩阵A的奇异值向量;
\(\color{red}{\rightarrow}\) [U,S,V]=svd(A):计算A的奇异值对角阵S和两个友矩阵U和V
【注】
奇异值相当于方阵中的特征值,奇异值分解相当于方阵中的特征值分解。
奇异值分解的揭秘(一):矩阵的奇异值分解过程 - 知乎 (zhihu.com)
特征值分解 和 SVD分解 - 知乎 (zhihu.com)
>> A=[1 3 6;2 4 5;1 2 3];
>> [U,S,A]=svd(A);
>> U
U =
-0.6608 0.7306 -0.1718
-0.6544 -0.6730 -0.3447
-0.3675 -0.1154 0.9228
>> S
S =
10.1722 0 0
0 1.2331 0
0 0 0.0797
>> A
A =
-0.2298 -0.5926 0.7720
-0.5245 -0.5928 -0.6112
-0.8198 0.5453 0.1746
1.17 矩阵转置和共轭转置
【函数说明】
\(\color{red}{\rightarrow}\) \(A.'\):计算A的转置矩阵。
\(\color{red}{\rightarrow}\) \(A'\):计算A的共轭转置矩阵。
>> A= randn(2,3)+j*randn(2,3); %创建一个复矩阵
>> A
A =
列 1 至 2
0.5377 - 0.4336i -2.2588 + 3.5784i
1.8339 + 0.3426i 0.8622 + 2.7694i
列 3
0.3188 - 1.3499i
-1.3077 + 3.0349i
>> A'
ans =
0.5377 + 0.4336i 1.8339 - 0.3426i
-2.2588 - 3.5784i 0.8622 - 2.7694i
0.3188 + 1.3499i -1.3077 - 3.0349i
>> A.'
ans =
0.5377 - 0.4336i 1.8339 + 0.3426i
-2.2588 + 3.5784i 0.8622 + 2.7694i
0.3188 - 1.3499i -1.3077 + 3.0349i
1.18 awgn函数:添加高斯白噪声
【函数说明】
\(\color{red}{\rightarrow}\) Y=awgnl(X,SNR):向信号X添加高斯白噪声,信噪比SNR单位为dB。信号X的功率假定为0dBW。
\(\color{red}{\rightarrow}\) Y=awgn(X,SNR,sigpower):向信号X添加高斯白噪声,信噪比SNR单位为dB。信号X的功率为sigpower(dBW)。
\(\color{red}{\rightarrow}\) Y=awgn(X,SNR,'measured'):向信号X添加高斯白噪声,信噪比SNR单位为dB。在添加噪声前计算信号X功率(dBW)。
>> X=randn(2,5); %产生一随机信号
>> X
X =
0.7254 0.7147 -0.1241 1.4090 0.6715
-0.0631 -0.2050 1.4897 1.4172 -1.2075
>> Y=awgn(X,10,'measured');
>> Y
Y =
0.9432 0.8632 0.0966 1.4983 0.9413
0.4320 0.1092 1.3976 1.1781 -1.5558
1.19 sin函数:正弦函数
【函数说明】
\(\color{red}{\rightarrow}\) \(y=\sin(x)\):返回x中各元素的正弦值,x单位为弧度(rad)。
1.20 cos函数:余弦函数
【函数说明】
\(\color{red}{\rightarrow}\) \(y=\cos(x)\):返回x中各元素的余弦值,x单位为弧度(rad)。
1.21 tan函数:正切函数
【函数说明】
\(\color{red}{\rightarrow}\) \(y=\tan(x)\):返回x中各元素的正切值,x单位为弧度(rad)。
1.22 asin函数:反正弦函数
【函数说明】
\(\color{red}{\rightarrow}\) \(y=asin(x)\):返回x中各元素的反正弦值,y单位为弧度(rad)。
1.23 acos函数:反余弦函数
【函数说明】
\(\color{red}{\rightarrow}\) \(y=acos(x)\):返回x中各元素的反余弦值,y单位为弧度(rad)。
1.24 atan函数:反正切函数
【函数说明】
\(\color{red}{\rightarrow}\) \(y= atan(x)\):返回x中各元素的反正弦值,x单位为弧度(rad)。
1.25 abs函数:求复数的模
【函数说明】
\(\color{red}{\rightarrow}\) y=abs(x):如果x是实数,返回x的绝对值;如果x是复数,返回x的模。
>> a= -1;
>> b=1+1j;
>> abs(a)
ans =
1
>> abs(b)
ans =
1.4142
1.26 angle函数:求复数的相位角
【函数说明】
\(\color{red}{\rightarrow}\) y=angle(x):返回复数x的相位角,单位为弧度(rad)。
【注】
将复数用向量的形式在直角坐标系中表示出来,向量与X轴正半轴的夹角就是该复数的相位角.
1.27 real函数:求复数的实部
【函数说明】
\(\color{red}{\rightarrow}\) y=real(x):返回复数x的实数部分。
>> a=1+1j
a =
1.0000 + 1.0000i
>> real(a)
ans =
1
1.28 imag函数:求复数的虚部
【函数说明】
\(\color{red}{\rightarrow}\) y=imag(x):返回复数x的虚部部分
>> a=1+1j
a =
1.0000 + 1.0000i
>> imag(a)
ans =
1
1.29 sum函数:求和函数
【函数说明】
\(\color{red}{\rightarrow}\) B=sum(A):如果A为一向量,返回各元素之和;如果A为矩阵,返回各列元素之和构成的一个行向量。
\(\color{red}{\rightarrow}\) B=sum(A,dim):沿着dim指定的维数求和,其中\(dim \in [1,N]\),N为矩阵维数。当dim取1时,返回列向量之和构造的行向量;当dim取2时,返回行向量之和构造的列向量。
>> A=[1 3 6;2 4 5;1 1 1];
>> sum(A,1)
ans =
4 8 12
>> sum(A,2)
ans =
10
11
3
>> sum(A)
ans =
4 8 12
1.30 max函数:求最大值函数
【函数说明】
\(\color{red}{\rightarrow}\) B=max(A):如果A为一向量,返回各元素之中的最大值;如果A是矩阵,返回各列元素最大值构成的一个行向量。
\(\color{red}{\rightarrow}\) B=max(A,[],dim):沿着dim指定的维数求最大值,其中\(dim \in [1,N]\),N为矩阵维数。当dim取1时,返回列向量最大值构成的行向量;当dim取2时,返回行向量最大值构造的列向量。
>> A=[1 3 6;2 4 5;1 2 3;1 1 1];
>> max(A,[],1)
ans =
2 4 6
>> max(A,[],2)
ans =
6
5
3
1
>> max(A)
ans =
2 4 6
1.31 min函数:求最小值函数
【函数说明】
\(\color{red}{\rightarrow}\) B=min(A):如果A为一向量,返回各元素之中的最小值;如果A是矩阵,返回各列元素最小值构成的一个行向量。
\(\color{red}{\rightarrow}\) B=min(A,[],dim):沿着dim指定的维数求最小值,其中\(dim \in [1,N]\),N为矩阵维数。当dim取1时,返回列向量最小值构成的行向量;当dim取2时,返回行向量最小值构造的列向量。
>> A=[1 3 6;2 4 5;1 2 3;1 1 1];
>> min(A)
ans =
1 1 1
>> min(A,[],1)
ans =
1 1 1
>> min(A,[],2)
ans =
1
2
1
1
1.32 sort函数:排序函数
【函数说明】
\(\color{red}{\rightarrow}\) B=sort(A):如果A为一向量,则将A中各元素按从小到大排序;如果A为矩阵,则将A中各列元素按从小到大排序。
\(\color{red}{\rightarrow}\) B=sort(A,dim):沿着dim指定的顺序排序,当dim取1时,则将A中各列元素按从小到大排序;当dim取2时,则将A中各行元素从小到大排序。
\(\color{red}{\rightarrow}\) B=sort(...,mode):将矩阵中元素按指定模式排列,当mode=’ascend‘时,则按从小到大排序;当mode='descend'时,则按从大到小排序。
\(\color{red}{\rightarrow}\) [B,V]=sort(A),将A排序,并返回一个与A同形的矩阵V,指定B矩阵中各元素在A中的位置。V是一个排序索引。
【注】
对数组元素排序 - MATLAB sort - MathWorks 中国
1.33 poly2sym函数:创建多项式
【函数说明】
\(\color{red}{\rightarrow}\) y=poly2sym(c):返回一个符号多项式。其中,参数c为保存多项式的系数的向量。
\(\color{red}{\rightarrow}\) y=poly2sym(c,'t'):返回一个符号多项式。其中,参数c为保存多项式的系数的向量,t为符号变量。
>> c=[1 2 5 7]
c =
1 2 5 7
>> y=poly2sym(c);
>> y
y =
x^3 + 2*x^2 + 5*x + 7
1.34 sym2poly函数:符号多项式转换为数值多项式
\(\color{red}{\rightarrow}\) c=sym2poly(y):返回符号多项式y的数值系数构成的行向量。
>> syms x;
>> y=x^3+2*x^2+5*x+7;
>> c=sym2poly(y);
>> c
c =
1 2 5 7
1.35 roots函数:多项式求根
\(\color{red}{\rightarrow}\) r=roots(c):返回一个由多项式根构成的列向量。
>> c=[1,2,5,7];
>> r=roots(c);
>> r
r =
-0.1981 + 2.0797i
-0.1981 - 2.0797i
-1.6038 + 0.0000i
1.36 size函数:求矩阵大小
\(\color{red}{\rightarrow}\) [m,n]=size(A):分别返回矩阵的行数和列数。
>> A=[1 2 3 4;5 6 7 8];
>> A
A =
1 2 3 4
5 6 7 8
>> [m,n] = size(A);
>> m
m =
2
>> n
n =
4