天天看點

MATLAB常用操作大全

1.點乘,點除,點乘方

點乘(對應元素相乘),必須同維或者其中一個是标量,a.*b

點除,a.\b表示矩陣b的每個元素除以a中對應元素或者除以常數a,a./b表示常數a除以矩陣b中每個元素或者矩陣a除以矩陣b對應元素或者常數b

點乘方a.^b,矩陣a中每個元素按b中對應元素乘方或者b是常數

2.矩陣中元素的操作

矩陣a中第r行,a(r,:),

第r列,a(:,r),

依次提取每一列組成一個列向量a(:),

提取子矩陣第i到j行和第k到t列a(i:j,k:t)

可以通過下标引用,但是元素下标從1開始, 也可通過序号引用,但是按列存儲,也就是說對于3*3的矩陣a,a(4)是a(1,2)不是a(2,1)

3.求極限

syms x;

f表達式

limit(f,0)//表示x趨于0時的極限

4.因式分解

syms x

factor(表達式)

5.求積分

y = x^2 + 2

int(y,3,4)//在區間3到4求積分

或者

quad('sin(x)',4,6) %必加引号

5 . 求n階導數

diff(函數表達式,階數n)//注意并不是在x = n時的一階導數值

6.解一進制方程

 y = X^3 - 1//y必須是個式子,也就是說x必須是符号變量不可是具體的數,否則一直空解

solve(y)

求方程 3x4+7x3 +9x2-23=0的全部根。

p=[3,7,9,0,-23];        %建立多項式系數向量

x=roots(p)               %求根

7.whos用于顯示駐留在工作區内的變量的詳細資訊,采用clear 變量名把該變量清理出記憶體

8.linspace(a,b,n) 其中a和b是生成向量的第一個和最後一個元素,n是元素總數。 顯然,linspace(a,b,n)與a:(b-a)/(n-1):b等價。

9.size(矩陣名),輸出行數和列數,比如産生和矩陣a同維的全一陣,ones(size(a))

10.常用的産生通用特殊矩陣的函數有: zeros:産生全0矩陣(零矩陣)。 ones:産生全1矩陣(幺矩陣)。 eye:産生機關矩陣。 rand:産生0~1間均勻分布的随機矩陣。 randn:産生均值為0,方差為1的标準正态分布随機矩陣。

   一.常用特殊陣

建立随機矩陣:

(1) 在區間[20,50]内均勻分布的5階随機矩陣。

(2) 均值為0.6、方差為0.1的5階正态分布随機矩陣。

指令如下: x=20+(50-20)*rand(5)

y=0.6+sqrt(0.1)*randn(5)

此外,常用的函數還有reshape(A,m,n),它在矩陣總元素個數保持不變的前提下,将矩陣A重新排成m×n的二維矩陣。

例如,行向量:

a = [1 2 3 4 5 6]

執行下面語句把它變成3行2列:

b = reshape(a,3,2)

執行結果:

b =

1 4

2 5

3 6

在使用reshape時一定要注意的是變換前後矩陣的總元素個數和值不變。

   二.用于專門學科的特殊矩陣

 (1) 魔方矩陣

魔方矩陣有一個有趣的性質,其每行、每列及兩條對角線上的元素和都相等。

對于n階魔方陣,其元素由1,2,3,…,n2共n2個整數組成。MATLAB提供了求魔方矩陣的函數magic(n),其功能是生成一個n階魔方陣。

将101~125等25個數填入一個5行5列的表格中,使其每行每列及對角線的和均為565。

M=100+magic(5)

可知:n階普通魔方陣的常數值是n(n^2+1)/2(1加到n^2再除以n)。

 (2) 範得蒙矩陣

範得蒙(Vandermonde)矩陣最後一列全為1,倒數第二列為一個指定的向量,其他各列(即從第三列開始)是其後列與倒數第二列的點乘積即倒數第二列的次方。

可以用一個指定向量生成一個範得蒙矩陣。在MATLAB中,函數vander(V)生成以向量V為基礎向量的範得蒙矩陣。

例如,A=vander([1;2;3;5])即可得到上述範得蒙矩陣。

(3) 希爾伯特矩陣

Hilbert matrix,矩陣的一種,其元素為1/(i+j-1),ij分别為其行标和列标。

  即:

  [1,1/2,1/3,……,1/n]

  |1/2,1/3,1/4,……,1/(n+1)|

  |1/3,1/4,1/5,……,1/(n+2)|

  ……

  [1/n,1/(n+1),1/(n+2),……,1/(2n-1)]

  希爾伯特矩陣是一種數學變換矩陣,正定,且高度病态(即,任何一個元素發生一點變動,整個矩陣的值和逆矩陣都會發生巨大變化),病态程度和階數相關。

在MATLAB中,生成希爾伯特矩陣的函數是hilb(n)。 使用一般方法求逆會因為原始資料的微小擾動而産生不可靠的計算結果。MATLAB中,有一個專門求希爾伯特矩陣的逆的函數invhilb(n),其功能是求n階的希爾伯特矩陣的逆矩陣。

因為希爾伯特矩陣已經規定好了,是以hilb和invhilb隻有一個參數即階數。

format rat     %以有理形式輸出,即循環小數表示成分數

(4) 托普利茲矩陣

托普利茲(Toeplitz)矩陣除第一行第一列外,其他每個元素都與左上角的元素相同。即主對角線上的元素相等,平行于主對角線的線上的元素也相等。生成托普利茲矩陣的函數是toeplitz(x,y),它生成一個以x為第一列,y為第一行的托普利茲矩陣。這裡x, y均為向量,兩者不必等長。toeplitz(x)用向量x生成一個對稱的托普利茲矩陣。例如   T=toeplitz(1:6).

 (5) 伴随矩陣

MATLAB生成伴随矩陣的函數是compan(p),其中p是一個多項式的系數向量,高次幂系數排在前,低次幂排在後。

例如,為了求多項式的x3-7x+6的伴随矩陣,可使用指令: p=[1,0,-7,6];

compan(p)

看了好多的書,都把compan()函數翻譯成求伴随矩陣或友矩陣,可是你用它的時候你會

發現,compan()函數的輸入隻能是一個向量(vector),而不能是一個矩陣(matrix),

是以我覺得它不能稱為真正的求伴随矩陣的函數。不過,我們可以利用高等數學上的伴随

矩陣和逆矩陣的關系來求逆矩陣,像這樣:

1 function J=companymatrix(A)
2 if det(A)~=0%det是求行列式的值
3      J=inv(A)*det(A);
4 else
5      fprintf('|A|=0\n');
6      J=pinv(A)*det(A);
7 end      

(6) 帕斯卡矩陣

我們知道,二次項(x+y)n展開後的系數随n的增大組成一個三角形表,稱為楊輝三角形。

由楊輝三角形表組成的矩陣稱為帕斯卡(Pascal)矩陣。

函數pascal(n)生成一個n階帕斯卡矩陣。

求(x+y)5的展開式。

在MATLAB指令視窗,輸入指令: pascal(6)

矩陣次對角線上的元素1,5,10,10,5,1即為展開式的系數。

11.矩陣分析

   11.1 對角陣 隻有對角線上有非0元素的矩陣稱為對角矩陣,對角線上的元素相等的對角矩陣稱為數量矩陣,對角線上的元素都為1的對角矩陣稱為機關矩陣。

diag(a),提取矩陣a的對角線元素組成列向量。

先建立5×5矩陣A,然後将A的第一行元素乘以1,第二行乘以2,…,第五行乘以5。

A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;... 11,18,25,2,19];

D=diag(1:5);

D*A  %用D左乘A,對A的每行乘以一個指定常數

   11.2三角陣

triu及tril

  11.3矩陣轉置

a'共轭轉置,a.'為普通矩陣轉置(并不是順時針旋轉90),rot90(a)表示逆時針旋轉90

   11.4矩陣的翻轉

對矩陣實施左右翻轉是将原矩陣的第一列和最後一列調換,第二列和倒數第二列調換,…,依次類推。

MATLAB對矩陣A實施左右翻轉的函數是fliplr(A)。

矩陣的上下翻轉 MATLAB對矩陣A實施上下翻轉的函數是flipud(A)。

   11.5方陣的行列式

把一個方陣看作一個行列式,并對其按行列式的規則求值,這個值就稱為矩陣所對應的行列式的值。在MATLAB中,求方陣A所對應的行列式的值的函數是det(A)。

   11.6矩陣的秩與迹

1.矩陣的秩 矩陣線性無關的行數與列數稱為矩陣的秩。在MATLAB中,求矩陣秩的函數是rank(A)。

2.矩陣的迹 矩陣的迹等于矩陣的對角線元素之和,也等于矩陣的特征值之和。在MATLAB中,求矩陣的迹的函數是trace(A)。

   11.7向量和矩陣的範數

向量的3種常用範數及其計算函數

在MATLAB中,求向量範數的函數為:

(1) norm(V)或norm(V,2):計算向量V的2—範數。

(2) norm(V,1):計算向量V的1—範數。

(3) norm(V,inf):計算向量V的∞—範數。

在MATLAB中,計算矩陣A的3種條件數的函數是:

(1) cond(A,1)   計算A的1—範數下的條件數。

(2) cond(A)或cond(A,2)   計算A的2—範數數下的條件數。

(3) cond(A,inf)   計算A的 ∞—範數下的條件數。

   11.8矩陣的特征值與特征向量

在MATLAB中,計算矩陣A的特征值和特征向量的函數是eig(A),常用的調用格式有3種:

(1) E=eig(A):求矩陣A的全部特征值,構成向量E。

(2) [V,D]=eig(A):求矩陣A的全部特征值,構成對角陣D,并求A的特征向量構成V的列向量。

(3) [V,D]=eig(A,‘nobalance’):與第2種格式類似,但第2種格式中先對A作相似變換後求矩陣A的特征值和特征向量,而格式3直接求矩陣A的特征值和特征向量。

   11.9

關系運算    

MATLAB提供了6種關系運算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于)。

它們的含義不難了解,但要注意其書寫方法與數學中的不等式符号不盡相同。

a = b表示把b指派給同維的矩陣a

關系運算符的運算法則為:    

(1) 當兩個比較量是标量時,直接比較兩數的大小。若關系成立,關系表達式結果為1,否則為0。    

(2) 當參與比較的量是兩個維數相同的矩陣時,比較是對兩矩陣相同位置的元素按标量關系運算規則逐個進行,并給出元素比較結果。

最終的關系運算的結果是一個維數與原矩陣相同的矩陣,它的元素由0或1組成。

當參與比較的一個是标量,而另一個是矩陣時,則把标量與矩陣的每一個元素按标量關系運算規則逐個比較,并給出元素比較結果。

産生5階随機方陣A,其元素為[10,90]區間的随機整數,然後判斷A的元素是否能被3整除。    

(1) 生成5階随機方陣A。 A=fix((90-10+1)*rand(5)+10)    

(2) 判斷A的元素是否可以被3整除。

P=rem(A,3)==0 其中,rem(A,3)是矩陣A的每個元素除以3的餘數矩陣。

此時,0被擴充為與A同維數的零矩陣,P是進行等于(==)比較的結果矩陣。

建立矩陣A,然後找出大于4的元素的位置。

(1) 建立矩陣A。 A=[4,-65,-54,0,6;56,0,67,-45,0]

(2) 找出大于4的元素的位置。 find(A>4)

12.

  solve是符号解(解析解),roots是數值解 用求特征值的方法解方程。

3x5-7x4+5x2+2x-18=0 p=[3,-7,0,5,2,-18];

A=compan(p);           %A的伴随矩陣

x1=eig(A)              %求A的特征值

x2=roots(p)                 %直接求多項式p的零點

矩陣的超越函數

1.矩陣平方根sqrtm sqrtm(A)計算矩陣A的平方根。

 2.矩陣對數logm logm(A)計算矩陣A的自然對數。

此函數輸入參數的條件與輸出結果間的關系和函數sqrtm(A)完全一樣

矩陣指數expm、expm1、expm2、expm3 expm(A)、expm1(A)、expm2(A)、expm3(A)的功能都求矩陣指數eA。

4.普通矩陣函數funm funm(A,‘fun’)用來計算直接作用于矩陣A的由‘fun’指定的超越函數值。當fun取sqrt時,funm(A,‘sqrt’)可以計算矩陣A的平方根,與sqrtm(A)的計算結果一樣。

13.自然對數相關

exp,即自然對數表示為exp(x)。
log(X) %自然對數
log2(X) %以2為底
log10(X) %以10為底

14.多項式乘除法      
1  p1=conv([1,0,2],conv([1,4],[1,1]));  %conv表示多項式相乘
2 p2=[1 0 1 1];  
3 [q,r]=deconv(p1,p2); 
4 cq='商多項式為  '; cr='餘多項式為  '; %disp為螢幕輸出函數
5 disp([cq,poly2str(q,'s')]),disp([cr,poly2str(r,'s')]) % poly2str表示生成多項式      

商多項式為     s + 5

餘多項式為     5 s^2 + 4 s + 3

15.

polyval(p,x)計算在X中任意元素處的多項式p的估值。 

poly(A)求矩陣的特征多項式。

[d,v] = eig(A)其中d是矩陣的特征向量,V是特征值。

繼續閱讀