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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM