Matlab用法簡介_第1頁
Matlab用法簡介_第2頁
Matlab用法簡介_第3頁
Matlab用法簡介_第4頁
Matlab用法簡介_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Matlab用法簡介 緒  論Matlab是“Matrix Laboratory”的縮寫,意為“矩陣實驗室”,是當今美國很流行的科學計算軟件信息技術(shù)、計算機技術(shù)發(fā)展到今天,科學計算在各個領(lǐng)域得到了廣泛的應(yīng)用在許多諸如控制論、時間序列分析、系統(tǒng)仿真、圖像信號處理等方面產(chǎn)生了大量的矩陣及其相應(yīng)的計算問題自己去編寫大量的繁復的計算程序,不僅會消耗大量的時間和精力,減緩工作進程,而且往往質(zhì)量不高美國Mathwork軟件公司推出的Matlab軟件就是為了給人們提供一個方便的數(shù)值計算平臺而設(shè)計的Matlab是一個交互式的系統(tǒng),它的基本運算單元是不需指定維數(shù)的矩陣,按照IEEE

2、的數(shù)值計算標準(能正確處理無窮數(shù)Inf(Infinity)、無定義數(shù)NaN(not-a-number)及其運算)進行計算系統(tǒng)提供了大量的矩陣及其它運算函數(shù),可以方便地進行一些很復雜的計算,而且運算效率極高Matlab命令和數(shù)學中的符號、公式非常接近,可讀性強,容易掌握,還可利用它所提供的編程語言進行編程完成特定的工作除基本部分外,Matlab還根據(jù)各專門領(lǐng)域中的特殊需要提供了許多可選的工具箱,如應(yīng)用于自動控制領(lǐng)域的Control System工具箱和神經(jīng)網(wǎng)絡(luò)中Neural Network工具箱等第一節(jié)Matlab的安裝及使用§1.1 Matlab的安裝Matlab有各種版本,早期有M

3、atlab 1.0 for 386的DOS版本,后來逐步發(fā)展這里介紹的版本是Matlab 6.x for Windows因為它使用方便,界面美觀,我們選擇它作為主要講解版本Matlab還有許多附加的部分,最常見的部分稱為Simulink,是一個用作系統(tǒng)仿真的軟件包,它可以讓您定義各種部件,定義各自對某種信號的反應(yīng)方式及與其它部件的連接方式最后選擇輸入信號,系統(tǒng)會仿真運行整個模擬系統(tǒng),并給出統(tǒng)計數(shù)據(jù)Simulink有時是作為Matlab的一部分提供的,稱為Matlab with Simulink版本Matlab還有許多工具箱,它們是根據(jù)各個特殊領(lǐng)域的需要,用Matl

4、ab自身的語言編寫的程序集,使用起來非常方便您可以視工作性質(zhì)和需要購買相應(yīng)的工具箱常見的工具箱有:Signal Process信號處理System Identification系統(tǒng)辨識Optimization優(yōu)化Neural Network神經(jīng)網(wǎng)絡(luò)Control System自動控制Spline樣條Symbolic Math符號代數(shù)Image Process圖像處理Nonlinear Control非線性控制Statistics統(tǒng)計§1.2 Matlab基本用法從Windows中雙擊Matlab圖標,會出現(xiàn)Matlab命令窗口(Command Window),在一段提示信息后,出現(xiàn)系

5、統(tǒng)提示符“>>”Matlab是一個交互系統(tǒng),您可以在提示符后鍵入各種命令,通過上下箭頭可以調(diào)出以前打入的命令,用滾動條可以查看以前的命令及其輸出信息如果對一條命令的用法有疑問的話,可以用Help菜單中的相應(yīng)選項查詢有關(guān)信息,也可以用help命令在命令行上查詢,您可以試一下help、help help和help eig(求特征值的函數(shù))命令下面我們先從輸入簡單的矩陣開始掌握Matlab的功能§1.2.1輸入簡單的矩陣輸入一個小矩陣的最簡單方法是用直接排列的形式矩陣用方括號括起,元素之間用空格或逗號分隔,矩陣行與行之間用分號分開例如輸入:A=1  2  3

6、 ;  4  5  6 ;  7  8  0系統(tǒng)會回答A =1      2     34      5     67      8     0表示系統(tǒng)已經(jīng)接收并處理了命令,在當前工作區(qū)內(nèi)建立了矩陣A大的矩陣可以分行輸入,用回車鍵代替分號,如:A= 1  &#

7、160;  2     34     5     67     8     0 結(jié)果和上式一樣,也是A =1      2     34      5     67    

8、;  8     0§1.2.2矩陣元素Matlab的矩陣元素可以是任何數(shù)值表達式如:x= -1.3   sqrt(3)   (1+2+3)*4/5結(jié)果:x = -1.3000   1.7321    4.8000在括號中加注下標,可取出單獨的矩陣元素如:x(5)=abs(x(1)結(jié)果x = -1.3000   1.7321   

9、0;4.8000    0     1.3000注:結(jié)果中自動產(chǎn)生了向量的第5個元素,中間未定義的元素自動初始為零大的矩陣可把小的矩陣作為其元素來完成,如:A=A; 10  11  12結(jié)果A =1      2     34      5     67      8

10、    010    11   12小矩陣可用“:”從大矩陣中抽取出來,如:A=A(1:3,:);即從A中取前三行和所有的列,重新組成原來的A. (詳細介紹參見第二節(jié)的相關(guān)內(nèi)容)§1.2.3語句和變量Matlab的表述語句、變量的類型說明由Matlab系統(tǒng)解釋和判斷Matlab語句通常形式為:變量=表達式或者使用其簡單形式為:表達式表達式由操作符或其它特殊字符、函數(shù)和變量名組成表達式的結(jié)果為一個矩陣,顯示在屏幕上,同時保存在變量中以留用如果變量名和“=”省略,則具有ans名(意思指回答)的變量將

11、自動建立例如:鍵入1900/81結(jié)果為:ans =23.4568需注意的問題有以下幾點:l  語句結(jié)束鍵入回車鍵,若語句的最后一個字符是分號,即“;”,則表明不輸出當前命令的結(jié)果l  如果表達式很長,一行放不下,可以鍵入“”(三個點,但前面必須有個空格,目的是避免將形如“數(shù)2 ”理解為“數(shù)2.”與“.”的連接,從而導致錯誤),然后回車l  變量和函數(shù)名由字母加數(shù)字組成,但最多不能超過63個字符,否則系統(tǒng)只承認前63個字符l  Matlab變量字母區(qū)分大小寫,如A和a不是同一個變量,函數(shù)名一般使用小寫字母,如inv(

12、A)不能寫成INV(A),否則系統(tǒng)認為未定義函數(shù)§1.2.4 who和系統(tǒng)預定義變量輸入who命令可檢查工作空間中建立的變量,鍵入:who系統(tǒng)輸出為:Your variables are:A  ans  x這里表明三個變量已由前面的例子產(chǎn)生了但列表中列出的并不是系統(tǒng)全部的變量,系統(tǒng)還有以下內(nèi)部變量:eps、pi、Inf、NaN變量eps在決定諸如矩陣的奇異性時,可作為一個容許差,容許差的初值為1.0到1.0以后計算機所能表示的下一個最大浮點數(shù),IEEE在各種計算機、工作站和個人計算機上使用這個算法用戶可將此值置為任何其它值(包括0值)Matlab的內(nèi)部函數(shù)pinc

13、和rank以eps為缺省的容許差變量pi是p,它是用imag(log(-1)建立的.Inf表示無窮大如果您想計算1/0S=1/0結(jié)果會是Warning:Divide by zeroS=Inf具有IEEE規(guī)則的機器,被零除后,并不引出出錯條件或終止程序的運行,而產(chǎn)生一個警告信息和一個特殊值在計算方程中列出來變量NaN表示它是個不定值由Inf/Inf或0/0運算產(chǎn)生要了解當前變量的信息請鍵入whos,屏幕將顯示:  Name           Size &#

14、160;             Bytes             Class  A                4x3   

15、             96                  double array  S              

16、60;  1x1                8                  double array  ans        &#

17、160;            1x1                8                  double array

18、0; x                 1x5                40              

19、0;   double arrayGrand total is 19 elements using 152 bytes從size及bytes項目可以看出,每一個矩陣實元素需8個字節(jié)的內(nèi)存4×3的矩陣使用96個字節(jié),全部變量的使用內(nèi)存總數(shù)為152個字節(jié)自由空間的大小決定了系統(tǒng)變量的多少,如計算機上有虛擬內(nèi)存的話,其可定義的變量個數(shù)會大大增加§1.2.5數(shù)和算術(shù)表達式Matlab中數(shù)的表示方法和一般的編程語言沒有區(qū)別如:3          

20、0;         -99                       0.00019.63972           1.6021E-20  &#

21、160;        6.02252e23在計算中使用IEEE浮點算法其舍入誤差是eps浮點數(shù)表示范圍是10-30810308數(shù)學運算符有:+            加-             減*     

22、0;      乘/             右除             左除            冪這里1/4和41有相同的值都等于0.25(注意比較:1

23、4=4)只有在矩陣的除法時左除和右除才有區(qū)別§1.2.6復數(shù)與矩陣在Matlab中輸入復數(shù)首先應(yīng)該建立復數(shù)單位:i=sqrt(-1)及j=sqrt(-1)之后復數(shù)可由下面語句給出:Z=3+4i    (注意: 在4與i之間不要留有任何空間!)輸入復數(shù)矩陣有兩個方便的方法,如:A=1  2; 3  4 + i*5  6; 7  8和  A=1+5i  2+6i;  3+7i  4+8i兩式具有相等的結(jié)果但當復數(shù)作為矩陣

24、的元素輸入時,不要留有任何空間,如1+5i,如在“+”號左右留有空格,就會被認為是兩個分開的數(shù)不過實際使用復數(shù)時并沒有這么麻煩,系統(tǒng)有一個名為startup.m的Matlab命令文件,建立復數(shù)單位的語句也放在其中當Matlab啟動時,此文件自動執(zhí)行,i和j將自動建立§1.2.7輸出格式任何Matlab語句執(zhí)行結(jié)果都可在屏幕上顯示,同時賦給指定的變量,沒有指定變量時賦給ans數(shù)字顯示格式可由format命令來控制(Windows系統(tǒng)下的Matlab系統(tǒng)的數(shù)字顯示格式可以由Option菜單中的Numerical Format菜單改變)format僅影響矩陣的顯示,不影響矩陣的計算與存貯(

25、Matlab以雙精度執(zhí)行所有的運算)首先,如果矩陣元素是整數(shù)則矩陣顯示就沒有小數(shù),如x=-1 0 1,結(jié)果為:        x=               -1    0     1如果矩陣元素不是整數(shù)則輸出形式有:(用命令:format 格式進行切換)格式中文解釋說明for

26、mat短格式(缺省格式)Default. Same as SHORTformat short短格式(缺省格式)Scaled fixed point format with 5 digits(只顯示五位十進制數(shù))format long長格式Scaled fixed point format with 15 digitsformat short e短格式e方式Floating point format with 5 digitsformat long e長格式e方式Floating point format with 15 digitsformat short g短格式g方式Best of fix

27、ed or floating point format with 5 digitsformat long g長格式g方式Best of fixed or floating point format with 15 digitsformat hex16進制格式Hexadecimal formatformat +格式The symbols +, - and blank are printed                 

28、60;      for positive, negative and zero elements.                        Imaginary parts are ignoredformat bank銀行格式Fixed format for dollars and cents

29、format rat有理數(shù)格式Approximation by ratio of small integersformat compact壓縮格式Suppress extra line-feedsformat loose自由格式Puts the extra line-feeds back in例如:x=4/3  1.2345e-6在不同的輸出格式下的結(jié)果為:短格式                  

30、0;1.3333                                       0.0000短格式e方式       

31、0; 1.3333e+000                               1.234e-006長格式             

32、0;     1.333333333333333                   0.000001234500000長格式e方式         1.333333333333333e-000      &#

33、160;     1.23450000000000e-006有理數(shù)格式            4/3                           

34、60;                1/81004516進制格式           3ff5555555555555                 

35、60;   3eb4b6231abfd271+格式                    +                       &

36、#160;                       +對于短格式,如果矩陣的最大元素比數(shù)999999999大,或者比數(shù)0.0001小,則在打印時,將加入一個普通的長度因數(shù)如y=1.e20*x,意為x被1020乘,結(jié)果為:y=          1.0e+020*1.

37、3333             0.0000“+”格式是顯示大矩陣的一種緊湊方法,“+”,“-”和空格顯示正數(shù)、負數(shù)和零元素最后format compact命令壓縮顯示的矩陣,以允許更多的信息顯示在屏幕上§1.2.8 Help求助命令和聯(lián)機幫助Help求助命令很有用,它對Matlab大部分命令提供了聯(lián)機求助信息您可以從Help菜單中選擇相應(yīng)的菜單,打開求助信息窗口查詢某條命令,也可以直接用help命令鍵入help得到help列表文件,鍵入“help 指定

38、項目”,如:鍵入help eig則提供特征值函數(shù)的使用信息鍵入help 顯示如何使用方括號等鍵入help help顯示如何利用help本身的功能還有,鍵入lookfor  <關(guān)鍵字>:可以從m文件的help中查找有關(guān)的關(guān)鍵字§1.2.9 退出和存入工作空間退出Matlab可鍵入quit或exit或選擇相應(yīng)的菜單中止Matlab運行會引起工作空間中變量的丟失,因此在退出前,應(yīng)鍵入save命令,保存工作空間中的變量以便以后使用鍵入 save則將所有變量作為文件存入磁盤Matlab.mat中,下次Matlab啟動時,鍵入load將變量從Matlab

39、.mat中重新調(diào)出save和load后邊可以跟文件名或指定的變量名,如僅有save時,則只能存入Matlab.mat中如save temp命令,則將當前系統(tǒng)中的變量存入temp.mat中去,命令格式為:save temp x 僅僅存入x變量save temp X Y Z 則存入X、Y、Z變量load  temp可重新從temp.mat文件中提出變量,load也可讀ASCII數(shù)據(jù)文件詳細語法見聯(lián)機幫助第二節(jié)向量與矩陣運算Matlab能處理數(shù)、向量和矩陣但一個數(shù)事實上是一個1×1的矩陣,1個n維向量也不過是一個1×n或n×1的矩陣從這個角度上來講,

40、Matlab處理的所有的數(shù)據(jù)都是矩陣Matlab的矩陣處理能力是非常靈活、強大的以下我們將從矩陣的產(chǎn)生、基本運算、矩陣函數(shù)等幾個方面來說明§2.1向量及矩陣的生成除了我們在上節(jié)介紹的直接列出矩陣元素的輸入方法,矩陣還可以通過幾種不同的方式輸入到Matlab中§2.1.1 通過語句和函數(shù)產(chǎn)生1. 向量的產(chǎn)生除了直接列出向量元素(即所謂的“窮舉法”)外,最常用的用來產(chǎn)生相同增量的向量的方法是利用“:”算符(即所謂的“描述法”)在Matlab中,它是一個很重要的字符如:z=1:5z =     1  

41、   2     3     4     5即產(chǎn)生一個15的單位增量是1的行向量,此為默認情況.用“:”號也可以產(chǎn)生單位增量不等于1的行向量,語法是把增量放在起始量和結(jié)尾量的中間如:x=0:pi/4:pi即產(chǎn)生一個由0pi的行向量,單位增量是pi/4=3.1416/4=0.7854x = 0     0.7854    

42、;       1.5708           2.3562          3.1416也可以產(chǎn)生單位增量為負數(shù)的行向量如:y=6:-1:1y =     6     5   

43、0; 4     3     2     12. 矩陣的產(chǎn)生Matlab提供了一批產(chǎn)生矩陣的函數(shù):zeros產(chǎn)生一個零矩陣diag產(chǎn)生一個對角矩陣ones生成全1矩陣tril取一個矩陣的下三角eye生成單位矩陣triu取一個矩陣的上三角magic生成魔術(shù)方陣pascal生成PASCAL矩陣例如:ones(3)ans = 1    1     1 1

44、    1     1 1    1     1eye(3)ans = 1    0     0 0    1     0 0    0     1除了以上產(chǎn)生標準矩陣的函數(shù)外,Matlab還提供了產(chǎn)生隨機(向

45、量)矩陣的函數(shù)rand和randn,及產(chǎn)生均勻級數(shù)的函數(shù)linspace、產(chǎn)生對數(shù)級數(shù)的函數(shù)logspace和產(chǎn)生網(wǎng)格的函數(shù)meshgrid等等詳細使用請查閱隨機文檔“ : ”冒號可以用來產(chǎn)生簡易的表格,為了產(chǎn)生縱向表格形式,首先用冒號“ : ”產(chǎn)生行向量,再進行轉(zhuǎn)置,計算函數(shù)值的列,然后形成有二列的矩陣例如命令:x=(0.0:0.2:3.0)'y=exp(-x).*sin(x);x y產(chǎn)生結(jié)果為:ans =0             00.2000 

46、60;    0.16270.4000      0.26100.6000      0.30990.8000      0.32231.0000      0.30961.2000      0.28071.4000   

47、60;  0.24301.6000      0.20181.8000      0.16102.0000      0.12312.2000      0.08962.4000      0.06132.6000     

48、60;0.03832.8000      0.02043.0000      0.0070§2.1.2 通過后綴為.m的命令文件產(chǎn)生如有文件data.m,其中包括正文:A=  1 2 34 5 67 8 0則用data命令執(zhí)行data.m,可以產(chǎn)生名為A的矩陣§2.2 矩陣操作在Matlab中可以對矩陣進行任意操作,包括改變它的形式,取出子矩陣,擴充矩陣,旋轉(zhuǎn)矩陣等其中最重要的操作符為“:”,它的作用是取出選定的行與

49、列例如:A(:,:) 代表A的所有元素;試比較A(:), 將A按列的方向拉成長長的1列(向量);A(:,J) 代表A的第J列;A(J:K) 代表 A(J), A(J+1), , A(K),如同A(:)的第J到第K個元素;A(:,J:K) 代表A(:,J), A(:,J+1), , A(:,K),如此類推.對矩陣可以進行各種各樣的旋轉(zhuǎn)、變形、擴充:Matlab中有內(nèi)部函數(shù)fliplr ( Flip matrix in the left/right direction),它對矩陣進行左右旋轉(zhuǎn).例 x =    1    

50、0;2     3            fliplr(x)為      3     2    14     5     6    

51、0;                            6     5     4同樣有flipud:x =  1     4 

52、0;          flipud(x)為            3     6        2     5       &#

53、160;                            2     5        3     6  

54、0;                                 1     4矩陣的轉(zhuǎn)置用符號“ ' ”表示:如A=1  2  3;  4  5  6 ;

55、 7  8  0那么:計算B=A'B = 1    4     7 2    5     8 3    6     0符號“ ' ”為矩陣的轉(zhuǎn)置,如果Z為復矩陣,則Z'為它的復數(shù)共軛轉(zhuǎn)置,非共軛轉(zhuǎn)置使用Z.' 或conj(Z')求得reshape改變矩陣的形狀,這是什么意思呢?可舉一個例子

56、來說明A=A;10 11 12A = 1    2     3 4    5     6 7    8     0 10 11   12則 reshape(A,2,6)ans = 1    7     2    

57、; 8     3     0 4    10   5     11   6     12可見,reshape 是將矩陣元素以列為單位進行重組,原來4×3的矩陣變?yōu)榱?×6的矩陣那么以下的語句也不難理解了,它將矩陣A按列打開(size函數(shù)返回矩陣A的行數(shù)與列數(shù))reshape(A,1,size(A,1)*size(A,2),它等

58、價于A(:)' .還有函數(shù)rot90,它可以將矩陣進行各種90度的旋轉(zhuǎn);tril及triu取出矩陣的下三角及上三角陣等詳細的用法可以在需要使用時查閱手冊第三節(jié)矩陣的基本運算§3.1 加和減如矩陣A和B的維數(shù)相同,則A+B與A-B表示矩陣A與B的和與差如果矩陣A和B的維數(shù)不匹配,Matlab會給出相應(yīng)的錯誤提示信息如:A=                     

59、;           B=1     2     3                   1     4   

60、0; 74     5     6                   2     5     87     8   &

61、#160; 0                   3     6     0C =A+B返回:C =     2     6    10  

62、;   6    10    14    10    14     0如果運算對象是個標量(即1×1矩陣),可和其它矩陣進行加減運算例如:x=    -1             

63、     y=x-1=    -20                                 -12      

64、                           1§3.2矩陣乘法Matlab中的矩陣乘法有通常意義上的矩陣乘法,也有Kronecker乘法,以下分別介紹§3.2.1 矩陣的普通乘法矩陣乘法用“ * ”符號表示,當A矩陣列數(shù)與B矩陣的行數(shù)相等時,二者可以進行乘法運算,否則是錯誤的計算方法和線性代數(shù)中所介

65、紹的完全相同如:A=1  2 ; 3  4; B=5  6 ; 7  8;  C=A*B,結(jié)果為C= × = =即Matlab返回:C =    19    22    43    50如果A或B是標量,則A*B返回標量A(或B)乘上矩陣B(或A)的每一個元素所得的矩陣§3.2.2 矩陣的Kronecker乘法     

66、;  對n×m階矩陣A和p×q階矩陣B,A和B的Kronecher乘法運算可定義為:        由上面的式子可以看出,Kronecker乘積A B表示矩陣A的所有元素與B之間的乘積組合而成的較大的矩陣,B A則完全類似A B和B A均為np×mq矩陣,但一般情況下A B B A和普通矩陣的乘法不同,Kronecker乘法并不要求兩個被乘矩陣滿足任何維數(shù)匹配方面的要求Kronecker乘法的Matlab命令為C=kron(A,B),例如給定兩個矩陣A和B:

67、0;      A=     B=則由以下命令可以求出A和B的Kronecker乘積C:A=1  2;  3  4; B=1  3  2;  2  4  6;  C=kron(A,B)C =     1     3     2   

68、;  2     6     4     2     4     6     4     8    12     3  

69、   9     6     4    12     8     6    12    18     8    16   

70、0;24作為比較,可以計算B和A的Kronecker乘積D,可以看出C、D是不同的:A=1  2;  3  4; B=1  3  2;  2  4  6;  D=kron(B,A)D =     1     2     3     6     2 &

71、#160;   4     3     4     9    12     6     8     2     4     4&#

72、160;    8     6    12     6     8    12    16    18    24§3.3 矩陣除法在Matlab中有兩種矩陣除法符號:“”即左除和“”即右除

73、如果A矩陣是非奇異方陣,則AB是A的逆矩陣乘B,即inv(A)*B;而B/A是B乘A的逆矩陣,即B*inv(A)具體計算時可不用逆矩陣而直接計算通常:x=AB就是A*x=B的解;x=B/A就是x*A=B的解.當B與A矩陣行數(shù)相等可進行左除如果A是方陣,用高斯消元法分解因數(shù)解方程:A*x(:, j)=B(:, j),式中的(:, j)表示B矩陣的第j列,返回的結(jié)果x具有與B矩陣相同的階數(shù),如果A是奇異矩陣將給出警告信息如果A矩陣不是方陣,可由以列為基準的Householder正交分解法分解,這種分解法可以解決在最小二乘法中的欠定方程或超定方程,結(jié)果是m×n的x矩陣m是A矩陣的列數(shù),n是

74、B矩陣的列數(shù)每個矩陣的列向量最多有k個非零元素,k 是A的有效秩右除B/A可由B/A=(A'B')'左除來實現(xiàn)§3.4矩陣乘方AP意思是A的P次方如果A是一個方陣,P是一個大于1的整數(shù),則AP表示A的P次冪,即A自乘P次如果P不是整數(shù),計算涉及到特征值和特征向量的問題,如已經(jīng)求得:V,D=eig(A),則:AP=V*D.P/V(注:這里的.表示數(shù)組乘方,或點乘方,參見后面的有關(guān)介紹)如果B是方陣, a是標量,aB就是一個按特征值與特征向量的升冪排列的B次方程陣如果a和B都是矩陣,則aB是錯誤的§3.5 矩陣的超越函數(shù)在Matlab中解釋ex

75、p(A)和sqrt(A)時曾涉及到級數(shù)運算,此運算定義在A的單個元素上 Matlab可以計算矩陣的超越函數(shù),如矩陣指數(shù)、矩陣對數(shù)等一個超越函數(shù)可以作為矩陣函數(shù)來解釋,例如將“m”加在函數(shù)名的后邊而成expm(A)和sqrtm(A),當Matlab運行時,有下列三種函數(shù)定義:expm           矩陣指數(shù)logm        矩陣對數(shù)sqrtm    

76、;       矩陣開方所列各項可以加在多種m文件中或使用funm請見應(yīng)用庫中sqrtm.m,1ogm.m,funm.m文件和命令手冊§3.6數(shù)組運算數(shù)組運算由線性代數(shù)的矩陣運算符“*”、“/”、“”、“”前加一點來表示,即為“.*”、“./”、“.”、“.”注意沒有“.+”、“.-”運算§3.6.1數(shù)組的加和減對于數(shù)組的加和減運算與矩陣運算相同,所以“+”、“-”既可被矩陣接受又可被數(shù)組接受§3.6.2數(shù)組的乘和除數(shù)組的乘用符號.*表示,如果A與B矩陣具有相同階數(shù),則A.*B表示A和B單個元素

77、之間的對應(yīng)相乘例如 x=1  2  3; y= 4  5  6;計算z=x.*y結(jié)果z=4  10  18數(shù)組的左除(.)與數(shù)組的右除(./),由讀者自行舉例加以體會§3.6.3 數(shù)組乘方數(shù)組乘方用符號.表示例如:鍵入:x= 1  2  3y= 4  5  6則z=x.y=14  25  36=1  32  729(1) 如指數(shù)是個標量,例如x.2,x同上,則:z=x.2=12  22  32= 1  4

78、 9(2) 如底是標量,例如2 .x y ,x、y同上,則:z=2 .x y=21  22  23  24  25  26=2  4  8  16  32  64從此例可以看出Matlab算法的微妙特性,雖然看上去與其它乘方?jīng)]什么不同,但在2和“”之間的空格很重要,如果不這樣做,解釋程序會把“”看成是2的小數(shù)點 Matlab看到符號“”時,就會當做矩陣的冪來運算,這種情況就會出錯,因為指數(shù)矩陣不是方陣§3.7 矩陣函數(shù)Matlab的數(shù)學能力大部分是從它的矩

79、陣函數(shù)派生出來的,其中一部分裝入Matlab本身處理中,它從外部的Matlab建立的M文件庫中得到,還有一些由個別的用戶為其自己的特殊的用途加進去的其它功能函數(shù)在求助程序或命令手冊中都可找到手冊中備有為Matlab提供數(shù)學基礎(chǔ)的LINPACK和EISPACK軟件包,提供了下面四種情況的分解函數(shù)或變換函數(shù):(1)三角分解;(2)正交變換;(3) 特征值變換;(4)奇異值分解§3.7.1三角分解最基本的分解為“LU”分解,矩陣分解為兩個基本三角矩陣形成的方陣,三角矩陣有上三角矩陣和下三角矩陣計算算法用高斯變量消去法從lu函數(shù)中可以得到分解出的上三角與下三角矩陣,函數(shù)inv得到矩陣的逆矩陣

80、,det得到矩陣的行列式解線性方程組的結(jié)果由方陣的“”和“/”矩陣除法來得到例如:A= 1      2     34      5     67      8     0LU分解,用Matlab的多重賦值語句L,U=lu(A)得出L =0.14291.000000.57140.50001.00001.000000U =7.00

81、008.0000000.85713.0000004.5000注:L是下三角矩陣的置換,U是上三角矩陣的正交變換,分解作如下運算,檢測計算結(jié)果只需計算L*U即可求逆由下式給出: x=inv(A)x =-1.77780.8889-0.11111.5556-0.77780.2222-0.11110.2222-0.1111從LU分解得到的行列式的值是精確的,d=det(U)*det(L)的值可由下式給出:d=det(A)d =27直接由三角分解計算行列式:d=det(L)*det(U)d =27.0000為什么兩種d的顯示格式不一樣呢? 當Matlab做det(A)運算時,所有A的元素都是整

82、數(shù),所以結(jié)果為整數(shù)但是用LU分解計算d時,L、U的元素是實數(shù),所以Matlab產(chǎn)生的d也是實數(shù)例如:線性聯(lián)立方程取 b= 1                                       

83、;    3                                           5解Ax=b方程,用Matlab

84、矩陣除得到x=Ab結(jié)果x=0.33330.33330.0000由于A=L*U,所以x也可以有以下兩個式子計算:y=Lb,x=Uy得到相同的x值,中間值y為:y =5.00000.28570.0000Matlab中與此相關(guān)的函數(shù)還有rcond、chol和rref其基本算法與LU分解密切相關(guān)chol函數(shù)對正定矩陣進行Cholesky分解,產(chǎn)生一個上三角矩陣,以使R'*R=Xrref用具有部分主元的高斯約當消去法產(chǎn)生矩陣A的化簡梯形形式雖然計算量很少,但它是很有趣的理論線性代數(shù)為了教學的要求,也包括在Matlab中§3.7.2正交變換“QR”分解用于矩陣的正交三角分解它將矩陣分解為

85、實正交矩陣或復酉矩陣與上三角矩陣的積,對方陣和長方陣都很有用例如A=  1     2     34     5     67     8     910    11    12是一個降秩矩陣,中間列

86、是其它二列的平均,我們對它進行QR分解:Q,R=qr(A)Q =-0.0776-0.83310.54440.0605-0.3105-0.4512-0.77090.3251-0.5433-0.0694-0.0913-0.8317-0.77620.31240.31780.4461R =-12.8841-14.5916-16.29920-1.0413-2.0826000.0000000可以驗證Q*R就是原來的A矩陣由R的下三角都給出0,并且R(3,3)=0.0000,說明矩陣R與原來矩陣A都不是滿秩的下面嘗試利用QR分解來求超定和降秩的線性方程組的解例如:b= 1357討論線性方程組Ax=b,我們可

87、以知道方程組是超定的,采用最小二乘法的最好結(jié)果是計算x=Ab結(jié)果為:Warning: Rank deficient, rank = 2  tol =   1.4594e-014x =    0.5000         0    0.1667我們得到了缺秩的警告用QR分解法計算此方程組分二個步驟:y=Q'*bx=Ry求出的y值為y =-9.1586-0.34710.00

88、000.0000x的結(jié)果為Warning: Rank deficient, rank = 2  tol =   1.4594e-014x =    0.5000         0    0.1667用A*x來驗證計算結(jié)果,我們會發(fā)現(xiàn)在允許的誤差范圍內(nèi)結(jié)果等于b這告訴我們雖然聯(lián)立方程Ax=b是超定和降秩的,但兩種求解方法的結(jié)果是一致的顯然x向量的解有無窮多個,而“QR”分解僅僅

89、找出了其中之一§3.7.3奇異值分解在Matlab中三重賦值語句U,S,V=svd(A)在奇異值分解中產(chǎn)生三個因數(shù):A=U*S*V 'U矩陣和V矩陣是正交矩陣,S矩陣是對角矩陣,svd(A)函數(shù)恰好返回S的對角元素,而且就是A的奇異值(其定義為:矩陣A'*A的特征值的算術(shù)平方根)注意到A矩陣可以不是方的矩陣奇異值分解可被其它幾種函數(shù)使用,包括廣義逆矩陣pinv(A)、秩rank(A)、歐幾里德矩陣范數(shù)norm(A,2)和條件數(shù)cond(A)§3.7.4 特征值分解如果A是n×n矩陣,若l滿足Ax=lx,則稱l為A的特征值,x為相應(yīng)的特征向

90、量函數(shù)eig(A)返回特征值列向量,如果A是實對稱的,特征值為實數(shù)特征值也可能為復數(shù),例如:A=  0     1-1     0eig(A)產(chǎn)生結(jié)果ans =0 + 1.0000i0 - 1.0000i如果還要求求出特征向量,則可以用eig(A)函數(shù)的第二個返回值得到:x,D=eig(A)D的對角元素是特征值x的列是相應(yīng)的特征向量,以使A*x=x*D計算特征值的中間結(jié)果有兩種形式:Hessenberg形式為hess(A),Schur形式為schur(A)schur形式用來計

91、算矩陣的超越函數(shù),諸如sqrtm(A)和logm(A)如果A和B是方陣,函數(shù)eig(A,B)返回一個包含一般特征值的向量來解方程Ax=lBx雙賦值獲得特征向量X,D=eig(A,B)產(chǎn)生特征值為對角矩陣D滿秩矩陣X的列相應(yīng)于特征向量,使A*X=B*X*D,中間結(jié)果由qz(A,B)提供§3.7.5秩Matlab計算矩陣A的秩的函數(shù)為rank(A),與秩的計算相關(guān)的函數(shù)還有:rref(A)、orth(A)、null(A)和廣義逆矩陣pinv(A)等利用rref(A),A的秩為非0行的個數(shù)rref方法是幾個定秩算法中最快的一個,但結(jié)果上并不可靠和完善pinv(A)是基于奇異值的算法該算法消

92、耗時間多,但比較可靠其它函數(shù)的詳細用法可利用Help求助第四節(jié)Matlab中的圖形§4.1二維作圖繪圖命令plot繪制x-y坐標圖;loglog命令繪制對數(shù)坐標圖;semilogx和semilogy命令繪制半對數(shù)坐標圖;polor命令繪制極坐標圖§4.1.1 基本形式如果y是一個向量,那么plot(y)繪制一個y中元素的線性圖假設(shè)我們希望畫出y=0.,  0.48,  0.84,  1.,  0.91,  6.14 則用命令:plot(y)它相當于命令:plot(x, y),其中x=1,2,n或x=1;2;n,即向

93、量y的下標編號, n為向量y的長度Matlab會產(chǎn)生一個圖形窗口,顯示如下圖形,請注意:坐標x和y 是由計算機自動繪出的 圖4.1.1.1 plot(0.,0.48,0.84,1.,0.91,6.14) 上面的圖形沒有加上x軸和y軸的標注,也沒有標題用xlabel,ylabel,title命令可以加上如果x,y是同樣長度的向量,plot(x,y)命令可畫出相應(yīng)的x元素與y元素的x-y坐標圖例:x=0:0.05:4*pi;  y=sin(x);  plot(x,y)grid on, title(' y=sin( x ) 曲線圖&

94、#39; )xlabel(' x = 0 : 0.05 : 4Pi ')結(jié)果見下圖 圖4.1.1.2 y=sin(x)的圖形 title圖形標題xlabelx坐標軸標注ylabely坐標軸標注text標注數(shù)據(jù)點grid給圖形加上網(wǎng)格hold保持圖形窗口的圖形表4.1.1.1 Matlab圖形命令§4.1.2 多重線在一個單線圖上,繪制多重線有三種辦法.第一種方法是利用plot的多變量方式繪制:plot(x1,y1,x2,y2,.,xn,yn)x1,y1,x2,y2,.,xn,yn是成對的向量,每一對x, y在圖上產(chǎn)生如上方式的單線多變量方

95、式繪圖是允許不同長度的向量顯示在同一圖形上第二種方法也是利用plot繪制,但加上hold on/off命令的配合:plot(x1,y1)hold onplot(x2,y2)hold off第三種方法還是利用plot繪制,但代入矩陣:如果plot用于兩個變量plot(x,y),并且x,y是矩陣,則有以下情況:(1)如果y是矩陣,x是向量,plot(x,y)用不同的畫線形式繪出y的行或列及相應(yīng)的x向量,y的行或列的方向與x向量元素的值選擇是相同的(2)如果x是矩陣,y是向量,則除了x向量的線族及相應(yīng)的y向量外,以上的規(guī)則也適用(3)如果x,y是同樣大小的矩陣,plot(x,y)繪制x的列及y相應(yīng)的列還有其它一些情況,請參見Matlab的幫助系統(tǒng)§4.1.3 線型和顏色的控制如果不指定劃線方式和顏色,Matlab會自動為您選擇點的表示方式及顏色您也可以用不同的符號指定不同的曲線繪制方式例如:plot(x,y,'*') 

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論