matlab的常用函数


-- 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