《MATLAB編程及應用》全套教學課件_第1頁
《MATLAB編程及應用》全套教學課件_第2頁
《MATLAB編程及應用》全套教學課件_第3頁
《MATLAB編程及應用》全套教學課件_第4頁
《MATLAB編程及應用》全套教學課件_第5頁
已閱讀5頁,還剩555頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

MATLAB編程及應用全套可編輯PPT課件

1初識MATLAB第章全套可編輯PPT課件

1.1MATLAB簡介MATLAB是Matrixlaboratory的縮寫,即矩陣實驗室。矩陣實驗室MATLAB包含數百個內部函數。內部函數MATLAB、Mathematica和Maple。三大數學軟件MATLAB包含40多種工具箱。分為功能性工具箱和領域型工具箱。工具箱20世紀70年代子程序庫:CleveMoler博士開發了EISPACK和LINPACK程序庫用于特征值求解和解線性方程。1.2MATLAB的產生與發展20世紀70年代后期MATLAB誕生:開發子程序庫與FORTRAN的接口程序,取名MATLAB。1983年春第二代專業版誕生:①基于C語言開發;

②具備了數值計算和數據圖示化功能。1984年MathWorks公司成立:MATLAB推向市場;繼續進行研究和開發。1992年MATLAB4.0版本推出:之后陸續推出4.2、5.0、5.3、6.5等版本,直至7.0版本。時至今日每半年更新一次版本:以該年年份命名,并以a和b區分上半年和下半年。1.3MATLAB用戶界面當前文件夾窗口命令行窗口工作區窗口1.3MATLAB用戶界面命令行窗口:用戶交互窗口,在提示符“>>”后輸入命令。回車后,執行并在此顯示執行結果。工作區:存儲MATLAB創建的或從數據文件、其他程序導入的變量。在命令行提示符“>>”后鍵入語句;按Enter鍵,MATLAB會將變量添加到工作區中,并在命令行窗口中顯示結果。

1.3.1命令的執行>>a=1a=1>>b=2b=2>>c=a+bc=3>>d=cos(a)d=0.5403若要創建更多變量,則只需可在命令行提示符后依次鍵入即可。

1.3.1命令的執行>>b=2b=2>>c=a+bc=3>>d=cos(a)d=0.5403如果未指定輸出變量,那么MATLAB將使用變量ans(answer的縮略形式)來存儲計算結果。

1.3.1命令的執行>>sin(a)ans=0.8415如果語句以分號結束,那么MATLAB會執行計算,但不在命令行窗口中顯示輸出。>>e=a*b;使用whos可查看工作區的內容。

1.3.1命令的執行>>whosNameSizeBytesClassAttributesa1x18doubleans1x18doubleb1x18doublec1x18double【注意】退出MATLAB后,工作區中的變量不會保留。此時,可以使用save命令保存數據以供將來使用。>>savemyfile.mat

1.3.1命令的執行【注意】退出MATLAB后,工作區中的變量不會保留。此時,可以使用save命令保存數據以供將來使用。>>savemyfile.mat圖1-2當前工作區中的變量

1.3.1命令的執行通過保存操作,系統會使用.mat擴展名將工作區中的變量保存在當前工作文件夾中一個名為“.MAT”的壓縮文件中。使用load命令可以將MAT文件中的數據還原到工作區中。>>loadmyfile.mat【提問】要清除工作區中的所有變量,應該用什么命令呢?【練習】請先將工作區保存,然后清除工作區中的全部變量,最后使用load命令將數據還原到工作區中。

1.3.2光標與命令行的操作利用方向鍵“↑”“↓”,可以重新調用以前的(歷史)命令。再按Enter鍵,即可執行前一次的命令。在空白命令行中按“↑”鍵,可以調出歷史命令。

1.3.2光標與命令行的操作而“↓”鍵的功用則是在按下它并調出歷史命令后,與“↑”鍵配合使用,對歷史命令進行選擇,選定后按Enter鍵執行該命令。也可在鍵入命令的前幾個字符后按“↑”鍵。例如,要重新調用歷史命令b=2,在命令行鍵入“b=”后,按“↑”鍵,該歷史命令被選中,鍵入的內容“b=”被黃色標記,同時,歷史命令“b=2”被回調至命令行。

1.3.2光標與命令行的操作常用操作鍵及快捷鍵:操作鍵功能說明操作鍵功能說明↑Ctrl+1前尋式調回歷史命令行EscCtrl+u清除當前行的全部內容↓后尋式調回歷史命令行BackSpace刪除光標左邊的字符←在當前行中左移光標Delete刪除光標右邊的字符→在當前行中右移光標Ctrl+←光標左移一個單詞PageUp前尋式翻閱當前窗口中的內容Ctrl+→光標右移一個單詞PageDown后尋式翻閱當前窗口中的內容Ctrl+Z刪除光標所在命令行內容Home使光標移到當前行的首端Ctrl+A全選當前窗口內容End使光標移到當前行的末端Alt+BackSpace恢復上一次刪除

1.3.3工作窗與命令行的操作MATLAB除提供常用的操作鍵之外,還提供了許多通過鍵盤在命令行鍵入的控制命令。控制命令含義clc清除命令行窗口中的所有顯示內容clear清除內存中的變量和函數clf清除MATLAB的當前圖形窗口中的圖形dir列出指定目錄下的文件和子目錄清單cdcd后加路徑,改變當前工作子目錄;cd+Enter鍵,顯示當前工作子目錄disp在運行中顯示變量和文字內容:disp(x)或disp('字符')type顯示所有指定文件的全部內容:typefilenamehold控制當前圖像窗口對象是否被刷新,常與holdon和holdoff配合使用home發送光標復位命令,顯示為清空屏幕而不刪除任何文本1.4MATLAB幫助系統010203利用help指令利用菜單欄中的“幫助”(Help)按鈕利用lookfor指令在MATLAB系統中,相關的線上(On-Line)幫助方式有一下3種。【注意】MATLAB幫助系統中還有一些在線學習和視頻可供初學者快速入門。可通過幫助系統多多嘗試和發掘,學會使用幫助系統學習和查詢相關學習內容,可以在學習MATLAB的過程中達到事半功倍的效果。利用菜單欄中的“幫助”按鈕查詢查詢界面1.4MATLAB幫助系統MATLAB編程及應用2MATLAB基本計算和基礎知識第章使用MATLAB進行數學基本計算就像用計算器一樣方便、簡單;在命令行窗口的命令行提示符后鍵入算式,MATLAB就會把計算結果顯示出來。>>1+2+3+4+5+6ans=21>>1/2ans=0.50002.1

基本計算入門實例算術運算:加(+)、減(-)、乘(*)、除(/或\)及冪次方(^);>>((1+4)*5-12)/2ans=6.50002.1

基本計算入門實例優先級:如果有括號,那么括號優先執行,而且MATLAB允許括號嵌套。復數的計算:MATLAB還具有超越計算器的功能,它認識復數,能夠進行復數的計算。>>(2+3i)+(4+5i)ans=6.0000+8.0000i三角函數:可以如計算器般進行三角函數的運算。>>sin(pi/3)ans=0.86602.1

基本計算入門實例變量是指在程序執行過程中其值可以變化的量。2.2

變量變量用戶自定義變量系統預定義變量2.2.1用戶自定義變量以非數字的符號來表達,一般用拉丁字母來表示。變量的定義不需要特別聲明數據類型,其定義與賦值是同時完成的。>>a=3a=3定義了一個變量a,同時將其賦值為3。在對變量進行命名時,需要滿足下列4條規則。變量名區分大小寫,如“a”和“A”是不同的變量。變量名不能超過63個字符,第63個字符后的字符被忽略。變量名必須以字母開頭,其組成可以是任意字母、數字或下畫線,但不能含有空格和標點符號,如“6”“abc”“ac%b”都是不合法的變量名。關鍵詞、系統命名函數等不能作為變量名,如“if”“while”等。2.2.1用戶自定義變量2.2.1用戶自定義變量>>a=3a=3>>b=5*ab=153變量a15變量b5*3=15

先定義變量a,并賦值3;再定義變量b,同時調用變量a的當前值,計算后將結果賦值給變量b2.2.2系統預定義變量MATLAB系統提供了一些用戶不能清除的特殊變量,即系統預定義變量。

MATALB系統預定義變量及其含義預定義變量名含義ans運算結果默認變量名pi圓周率eps浮點數的精度,也是系統運算時確定的極小值nan或NAN非數,如0/0inf無窮大,如1/0i或j虛數標志,i=j=sqrt(-1)2.3數據類型MATLAB數據類型數值類型邏輯類型字符串類型單元類型結構類型2.3.1數值類型數值類型分類方法根據數據存儲空間和方式分類根據數據結構分類整型浮點型標量數組矩陣2.3.1數值類型實數的數值類型分類類型子類型符號位數用法整型有符號整型int88a=int32(12)

int1616

int3232

int6464

無符號整型uint88a=uint32(12)

uint1616

uint3232

uint6464

浮點型單精度浮點型single32a=single(12.34)

雙精度浮點型double64a=12.342.3.1數值類型【注意】(1)系統默認的數值類型是雙精度浮點型,因此,在使用double時,可以省略double符號。(2)當double類型的數值與其他類型的數值進行運算時,結果為其他類型的數值,single類型的數值不能和整型直接進行運算,各種不同位數的整型之間也不能直接進行運算。2.3.1數值類型因為系統默認的數據類型是雙精度浮點型,所以在將變量設置為整數時,需要進行轉換。函數運算法則例子floor向下取整floor(1.4)=1,floor(3.5)=3,floor(-3.5)=-4ceil向上取整ceil(1.4)=2,ceil(3.5)=4,ceil(-3.5)=-3round取最接近的整數,若小數部分是0.5,則向絕對值大的方向取整round(1.4)=1,round(3.5)=4,round(-3.5)=-4fix向0取整fix(1.4)=1,fix(3.5)=3,fix(-3.5)=-3將雙精度浮點型轉化為整數的轉化函數2.3.1數值類型復數由實部和虛部兩部分構成,在MATLAB中,字符i和j等價,默認作為虛部標志,數值與符號之間的乘號可以省略。>>a=1+2ia=1.0000+2.0000i>>b=3+4*jb=3.0000+4.0000i2.3.2邏輯類型MATLAB本身并沒有專門提供邏輯類型,而借用整型來描述邏輯類型數據。MATLAB規定,邏輯數據真(true)為1、邏輯數據假(false)為0。>>2<3ans=logical1>>2>3ans=logical02.3.3字符串類型MATLAB中的字符串是包含在單引號中的字符集合。>>s='你好,MATLAB'%定義字符串變量ss='你好,MATLAB'【注意】在MATLAB中,所有字符串都用英文半角單引號標識,字符串和字符數組是等價的,字符串中的每個字符(包括空格)都是字符數組的一個元素。利用length函數可以求取字符串的長度。length('你好,MATLAB!')ans=102.3.4單元類型單元類型是MATLAB中比較特殊的一種數據類型,其本質也是數組。一般數組:所有數組元素只能是同一種數據類型單元數組:可以把不同的數據類型組合在一起,從而形成一種比較復雜的數組。2.3.4單元類型創建單元類型數組的方法:(1)通過賦值語句創建單元類型數組:單元類型數組使用花括號“{}”來創建,使用“,”或空格來分隔單元,使用“;”來分行。>>A={'x',[2;3;6];10,2*pi}A=2×2cell數組{'x'}{3×1double}{[10]}{[6.2832]}2.3.4單元類型(2)使用cell函數創建空單元類型數組:先使用cell函數創建空單元類型數組,預先分配存儲空間;然后逐個對元素進行賦值。>>B=cell(1,2) %創建空單元類型數組BB=1×2cell數組{0×0double}{0×0double}>>B(1,1)={'MATLAB'};B{1,2}='好用!'; %為單元類型數組元素分別賦值B=1×2cell數組{'MATLAB'}{'好用!'}>>B(1,1)={'MATLAB'};B{1,2}='好用!'; %為單元類型數組元素分別賦值B=1×2cell數組{'MATLAB'}{'好用!'}2.3.5結構類型結構類型是另一種可以將不同的數據類型組合在一起的特殊數據類型,其本質依然是數組。創建單元類型數組的方法:(1)使用賦值語句創建結構類型數組并賦值;(2)使用struct函數創建結構類型數組并賦值。2.3.5結構類型(1)使用賦值語句創建結構類型數組并賦值;結構類型變量的使用必須指出結構的屬性名,并以操作符“.”來連接結構變量名與屬性名,對該屬性進行直接賦值,如A.b1、B(2,3).a3等。結構類型數組不同元素的類型可以不同。>>student.Name='小明';>>student.Age=18;>>student.Score=88student=包含以下字段的struct:Name:'小明'Age:18Score:882.3.5結構類型(2)使用struct函數創建結構類型數組并賦值。采用struct函數預先分配存儲空間并賦值,具體形式為:>>student=struct('Name','小明','Age',18,'Score',88)student=包含以下字段的struct:Name:'小明'Age:18Score:88結構類型變量=struct(元素名1,元素值1,元素名2,元素值2,…)。例如:2.4.1算數運算MATLAB運算包括算數運算、關系運算、邏輯運算、位運算和集合運算五大類。其中,算數運算、關系運算、邏輯運算為MATLAB的基本運算。MATLAB運算算數運算關系運算邏輯運算位運算集合運算2.4.1算數運算運算符含義+加-減*乘\矩陣左除/矩陣右除^矩陣冪次方.*數組乘./數組右除.\數組左除.^數組冪次方MATLAB的算數運算符及其含義2.4.1算數運算【注意】MATLAB中的算數運算與數學上的算數運算相比,需要注意和區分以下不同點。(1)除法分為左除和右除。(2)乘、左除、右除和冪次方運算將矩陣看作一個整體,遵循矩陣運算規則;數組乘、數組冪次方、數組左除和數組右除按數組元素進行相應的運算。【例2-1】求解算數表達式[1+2×(11-4)]+23的值。>>(1+2*(11-4))+2^3ans=232.4.2關系運算關系運算是用來判斷運算對象之間關系的運算,一共有6種。MATLAB的關系運算符及其含義運算符含義<小于<=小于或等于>大于>=大于或等于==等于~=不等于2.4.3邏輯運算MATLAB中的基本邏輯運算符有3種。MATLAB的邏輯運算符及其含義運算符含義&與|或~非2.5MATLAB的標點符號和特殊字符MATLAB中有一些被賦予特殊意義的符號,有一定的特殊含義。MATLAB的標點符號和特殊字符符號名稱含義:冒號有多種運算功能,用于定義行向量或截取指定矩陣中的部分=等號為變量賦值。等號左邊為變量名、右邊為變量的值;分號區別矩陣的行;命令行不輸出回顯信息.小數點描述小數%百分號注釋語句,增加程序的可讀性…續行符號續行,逗號矩陣每行元素之間的分隔符'單引號矩陣轉置運算、復數的共軛值、字符串定義等!感嘆號調用系統操作命令[]方括號矩陣的定義()圓括號指定函數中參量的輸入{}花括號構成單元類型數組2.6常用數學函數在MATLAB計算中,常常要用到一些數學函數。函數含義abs(x)對自變量取絕對值sqrt(x)對自變量開二次方exp(x)自然底數e的x次方sin(x)x的正弦值[其中x為弧度制,如果需要使用角度制,則采用sind(x)]asin(x)x的反正弦值(其中x為弧度制,角度制同上)cos(x)x的余弦值(其中x為弧度制,角度制同上)acos(x)x的反余弦值(其中x為弧度制,角度制同上)tan(x)x的正切值(其中x為弧度制,角度制同上)atan(x)x的反正切值(其中x為弧度制,角度制同上)log(x)自然對數:求以e為底x的對數log10(x)常用對數:求以10為底x的對數log2(x)求以2為底x的對數2.6常用數學函數在MATLAB計算中,常常要用到一些數學函數。函數含義round(x)、fix(x)對x進行取整。其中,round為四舍五入,fix為向下取整mod(x,y)求x/y的余數imag(x)、real(x)求x的虛部、實部find(x)尋找變量round(x)、fix(x)對x進行取整。其中,round為四舍五入,fix為向下取整find(x)尋找變量sort(x)將數組元素按照從小到大排序sum(x)數組元素求和roots(x)求解多項式的根axis([x1,x2,y1,y2])設置坐標軸范圍2.7函數語句在MATLAB中,一條命令就是一條語句,其格式與數學表達式十分接近。用戶在命令行窗口的命令提示符“>>”后輸入語句并按Enter鍵后,該語句就在MATLAB中運行,并在命令行窗口返回運行結果。函數語句表達式中一般包括運算符、標點符號和常用函數,表達式按照從左向右的順序執行。運算的優先級遵循數學運算的優先級規定,即冪運算優先,其次是乘除法,最后是加減法。若運算中有圓括號,則圓括號優先。【注意】表達式中的圓括號必須使用半角符號。2.7函數語句【例2-2】求

的值,并把它賦值給變量。>>a=(5*(7-2)^2)/(2/3)a=187.5000

在MATLAB中“變量=表達式”形式表示將表達式運算后賦值給變量。2.7函數語句>>a=8;b=7;c=6; %為變量a、b、c賦值>>s=(a+b+c)/2; %定義s為三角形的半周長>>S=sqrt(s*(s-a)*(s-b)*(s-c)) %利用海倫公式求面積S=20.3332為了增加代碼的可讀性,通常通過對代碼增添注釋來使代碼更容易讀懂,通過“%”表明標注開始,%后的所有內容均為注釋內容,MATLAB在運行時會自動忽略%后的內容。【例2-3】設三角形的3條邊的邊長為a=8、b=7、c=6,求此三角形的面積。【分析】

,其中MATLAB編程及應用3MATLAB數值計算第章矩陣是MATLAB進行數據處理和運算的基本元素,即最基本的MATLAB數據結構體就是矩陣。矩陣是按行和列排列的數據元素的二維矩形數組。一般的數學運算也都可以轉化成相應的矩陣運算來處理。>>clear>>A=100;>>whos%列出當前工作空間中所有變量的的變量名、尺寸、所占字節數及數據類型等NameSizeBytesClassAttributesA1x18double3.1

數據擬合MATLAB直接輸入法創建矩陣步驟:(1)用方括號“[]”把所有的矩陣元素括起來。(2)同一行的不同元素用逗號或空格來分隔。(3)用分號“;”指定一行元素的結束來分隔行,或者用回車符代替分號。(4)矩陣元素可以是實數或復數,也可以是表達式。如果是表達式,那么系統將自動計算表達式的結果,并賦值給相應的元素。>>a=[123]%構造1×3的矩陣a或行向量aa=123>>x=[123;456]%構造2×3的矩陣xx=1234563.1.1利用直接輸入法創建矩陣MATLAB中有許多內部函數,可以創建具有特定值或特定結構的矩陣。>>A=zeros(3,2)%利用zeros函數創建3×2全零矩陣A=000000>>B=ones(2,4)

%利用ones函數創建2×4全幺矩陣B=111111113.1.2利用函數創建矩陣3.1.2利用函數創建矩陣函數功能zeros(m,n)創建一個m行n列的全部元素為0的矩陣ones(m,n)創建一個m行n列的全部元素為1的矩陣eye(m,n)創建一個m行n列的單位矩陣rand(m,n)創建一個m行n列的0~1均勻分布的隨機矩陣randn(m,n)創建一個m行n列的均值為0、方差為1的標準正態分布隨機矩陣linspace(a,b,n)創建一個在[a,b]區間上線性n等分的矩陣[]創建空矩陣diag(X)若X是矩陣,則diag(X)為X的主對角線向量;若X是向量,則diag(X)產生以X為主對角線的對角矩陣tril(A)提取一個矩陣的下三角部分triu(A)提取一個矩陣的上三角部分創建矩陣的函數3.1.2利用函數創建矩陣【例3-1】分別構建隨機矩陣x和y,要求x是在區間[20,50]內均勻分布的3階隨機矩陣,y是均值為0.6、方差為0.1的3階正態分布隨機矩陣。>>x=20+(50-20)*rand(3)x=25.897934.198737.557927.532530.549836.491738.481344.924947.5158>>y=0.6+sqrt(0.1)*randn(3)y=0.34560.52290.23700.82030.66820.63320.86410.23130.82843.1.3利用M文件創建矩陣對于比較大且比較復雜的矩陣,可以為它專門建立一個M文件。MATLAB直接輸入法創建矩陣步驟:(1)使用編輯程序或MATLAB文本編輯器輸入文件內容。(2)把輸入的內容以M文件方式存盤。(3)在MATLAB命令行窗口中輸入文件名,就會自動建立一個矩陣,可供以后顯示和調用。3.1.3利用M文件創建矩陣x=[123]例如,打開MATLAB文本編輯器,輸入:保存文件,命名文件名為mymatrix.m;在命令行窗口的命令行提示符后輸入mymatrix,按Enter鍵后可生成以x為變量名的矩陣。>>mymatrixx=1233.1.4矩陣元素與矩陣元素變量MATLAB在定義矩陣的同時衍生出了矩陣元素變量。可以用下標來表示矩陣元素,如:A(2,3)表示A矩陣的第2行第3列的元素;A(:,1)表示矩陣A的第1列的元素;A(2,:)表示矩陣A的第2行的元素。3.1.4矩陣元素與矩陣元素變量矩陣元素可以修改。有兩種方法:方法一,可以通過界面的可視化操作直接編輯矩陣的某個元素。先在工作區中找到定義的矩陣變量名,然后雙擊變量名進入變量編輯界面。3.1.4矩陣元素與矩陣元素變量單擊需要修改的元素即可進行修改。例如,選擇元素A(1,3),將其值修改為10。在命令行窗口的命令行提示符后鍵入A,可查看修改后的矩陣A。>>AA=12104567893.1.4矩陣元素與矩陣元素變量方法二,使用MATLAB命令訪問數組的某個元素,采用“矩陣名(序號1,序號2)=數據”的方式來修改矩陣元素。>>A=[123;456;789] %定義3×3的矩陣AA=123456789>>A(2,1)=5; %修改元素變量A(2,1)的值為53.1.4矩陣元素與矩陣元素變量【例3-2】輸入矩陣A,并將矩陣A的第1行和第2行元素對調,其中矩陣

。>>A=[1234;5678;9101112] %輸入矩陣AA=123456789101112>>b=A(1,:) %取出矩陣A的第1行元素,賦值給變量bb=1234>>A(1,:)=A(2,:) %將第2元素賦值給第1行元素A=567856789101112>>A(2,:)=b%將原始矩陣A的第1行元素賦值給第2行元素A=5678123491011123.1.5串聯矩陣MATLAB可以使用方括號將現有矩陣連接在一起構建新的矩陣。這種創建矩陣的方法稱為串聯。>>A=ones(1,4);>>B=zeros(1,4);>>C=[AB]C=11110000>>D=[A;B]D=11110000要將A和B排列為一個矩陣的兩行,可以使用分號:3.1.5串聯矩陣要串聯兩個矩陣,它們的大小必須兼容:在水平串聯矩陣時,它們的行數必須相同;在垂直串聯矩陣時,它們的列數必須相同。>>A=ones(2,3)A=111111>>B=zeros(2,2)B=0000>>C=[AB]C=1110011100>>D=[A;[B,[0;0]]]D=1111110003.1.6擴展矩陣通過將一個或多個元素置于現有行和列索引邊界之外,可以將它們添加到矩陣中。MATLAB會自動用0填充矩陣,使其保持為矩形。>>A(3,4)=1A=102030060708000001還可以通過在現有索引范圍之外插入新矩陣來擴展其大小。>>A(4:5,5:6)=[23;45]A=10203000060708000000

0

1

0000

0

0

2300

0

0

453.1.7矩陣運算矩陣運算是根據矩陣運算規則進行的運算,MATLAB的處理方法與線性代數中的相同。運算符用途說明+加法A+B表示將A和B加在一起-減法A-B表示從A中減去B*矩陣乘法A*B表示A和B按矩陣乘法規則進行運算^矩陣冪次A^k表示矩陣A的k次冪運算/矩陣右除A/B表示矩陣A右除B,即AB-1\矩陣左除A\B表示矩陣A左除除B,即A-1B'矩陣轉置A'表示A的列元素與行元素互換3.1.7矩陣運算(1)矩陣的加減運算矩陣的加減是矩陣與矩陣對應元素的加減,其運算符是“+”和“-”。進行相加減的矩陣的階數必須相同。如果階數不同,則系統顯示出錯信息。MATLAB檢查矩陣階數的語句是size。例如>>A=[1234;5678;9101112]%輸入矩陣AA=123456789101112>>[m,n]=size(A) %檢查矩陣A的階數m=3n=43.1.7矩陣運算【例3-3】計算C=A+B,D=A-B,E=A+3。其中,,。>>A=[1234;5678;9101112]%輸入矩陣AA=123456789101112>>B=[2368;1357;1122]%輸入矩陣BB=236813571122>>C=A+B%A、B對應元素相加C=3591269121510111314>>D=A-B%A、B對應元素相減D=-1-1-3-4432189910>>E=A+3%矩陣與常量相加:每個元素進行加3的運算E=4567000189101112131415>>A=[123;567;91011]; %輸入矩陣A>>B=[159;2610;3711]; %輸入矩陣B>>C=A*B %矩陣A與矩陣B相乘C=143862381101862182302>>D=A*3 %矩陣A與標量3相乘D=369151821273033(2)矩陣的乘法運算矩陣乘法的運算符是“*”。只有當前一矩陣的列數與后一矩陣的行數相等或至少其中一個為標量時,才能進行乘法運算;否則,系統會提示錯誤信息。【例3-4】計算C=A+B,D=A-B,E=A+3。其中,

。3.1.7矩陣運算(3)矩陣的除法運算矩陣的除法運算分為左除和右除兩種,其運算符分別為“\”和“/”。A\B=A-1BB/A=BA-1【注意】A矩陣必須可逆。即①A為方陣;②A的各行(列)線性無關;③行列式的值不等于0。MATLAB提供了函數inv用以求解逆矩陣、函數det用以求解行列式的值、函數eye用于生成單位矩陣。3.1.7矩陣運算【例3-5】求矩陣

的行列式的值,當其行列式的值不為0時,求其逆矩陣。>>A=[21-3;431;1-42];>>det(A)ans=70>>inv(A)ans=0.14290.14290.1429-0.10000.1000-0.2000-0.27140.12860.02863.1.7矩陣運算>>A=[123;301;421];>>det(B) %求矩陣B的行列式的值ans=0>>inv(B) %B矩陣的行列式的值為0,數學上%的逆陣并不存在,驗證MATLAB對此的處理。警告:矩陣為奇異工作精度。ans=InfInfInfInfInfInfInfInfInf>>B=[555;555;555];3.1.7矩陣運算當數學上的逆矩陣并不存在時,MATLAB并不會報錯,而是給出警告,并提供參考計算結果。>>A/B警告:矩陣為奇異工作精度。ans=NaNNaNNaN

NaNNaNNaNNaNNaNNaN>>B\A%B左除A警告:矩陣為奇異工作精度。ans=NaNNaNNaNNaNNaNNaNInfNaN-Inf【例3-6】已知矩陣

,矩陣

,計算A左除B和B右除A。>>A=[123;301;421];%輸入矩陣A>>B=[555;555;555];%輸入矩陣B>>C=A\BC=1.11111.11111.1111-0.5556-0.5556-0.55561.66671.66671.6667>>D=B/AD=1.3889-0.27781.11111.3889-0.27781.11111.3889-0.27781.11113.1.7矩陣運算通常,X=A\B是A*X=B的解,X=A/B是X*B=A的解。>>A=[21-3;431;1-42];>>B=[4;5;12];>>X=A\BX=3.0000-2.3000-0.10003.1.7矩陣運算【例3-7】求線性方程組

的解。【分析】線性方程組一般可以表示成AX=B的形式。其中,A為等式左邊各方程式的系數項,X為欲求解的未知項,B為等式右邊的已知列向量。根據線性代數知識,可知,X=A-1B。因此,在MATLAB中求解線性方程組可通過矩陣除法運算獲得,即X=A\B。(4)矩陣的乘方運算矩陣的乘方運算使用的運算符是“^”,如果A是一個矩陣,P是一個整數,則A^P表示矩陣A自乘P次。3.1.7矩陣運算>>A=[21-3;431;1-42];>>A^3ans=67100-207176-68-103-5711(5)矩陣的轉置運算矩陣轉置是將第行第列的元素與第行第列的元素互換,其運算符為“'”。3.1.7矩陣運算>>A=[21-3;431;1-42]A=21-34311-42>>B=A'B=24113-4-312對于矩陣運算,MATLAB還提供了許多矩陣函數,正是因為擁有了如此眾多和完善的函數,MATLAB才具有了功能強大的數學處理能力。3.1.8矩陣的運算函數(1)矩陣行列式的值在MATLAB中,使用函數det(A)求矩陣行列式的值。3.1.8矩陣的運算函數例如,構建5階隨機矩陣,并求其行列式的值。>>A=rand(5)A=0.93400.33710.16560.74820.15240.12990.16220.60200.45050.82580.56880.79430.26300.08380.53830.46940.31120.65410.22900.99610.01190.52850.68920.91330.0782>>B=det(A)B=-0.11613.1.8矩陣的運算函數(2)矩陣求逆對于一個方陣A,如果存在一個與其同階的方陣B,使得AB=BA=I(I為單位矩陣),則稱B為A的逆矩陣。當然,A也是B的逆矩陣。求方陣的逆矩陣可調用函數inv。【例3-8】求方陣A的逆矩陣,且驗證。>>A=[1,-1,1;5,-4,3;2,1,1];>>B=inv(A)B=-1.40000.40000.20000.2000-0.20000.40002.6000-0.60000.2000>>E=A*BE=1.000000-0.00001.00000-0.000001.00003.1.8矩陣的運算函數(3)抽取對角矩陣在研究矩陣時,有時需要將矩陣的對角線上的元素提取出來形成一個列向量,有時也需要用一個向量構造一個對角矩陣。提取矩陣的對角線元素和構造對角矩陣的函數為diag。>>A=[1,2,3;4,5,6];>>D=diag(A)%提取對角線元素D=15diag函數還有一種形式:diag(矩陣名,k),實現提取第k條對角線上的元素。>>D1=diag(A,1)D1=263.1.8矩陣的運算函數(3)抽取對角矩陣如果V是一個含有m個元素的向量,那么diag(V)將產生一個m×m對角矩陣,其主對角線元素即向量V的元素。>>diag([1,2,-1,4])ans=1000020000-1000043.1.8矩陣的運算函數【例3-9】建立一個5×5的矩陣A,將其第1行元素乘以1,第2行元素乘以2……第5行元素乘以5。>>A=ones(5)A=1111111111111111111111111>>D=diag(1:5)D=1000002000003000004000005>>D*Aans=11111222223333344444

555553.1.8矩陣的運算函數(4)矩陣重構MATLAB提供將矩陣或向量重構為新矩陣的函數reshape,其形式有以下兩種。①B=reshape(A,[m,n])。②B=reshape(A,m,n)。【注意】①重構矩陣的元素個數m×n必須與向量元素個數相等。②重構矩陣按列進行。3.1.8矩陣的運算函數【例3-10】將10個元素的1×10矩陣(向量)重構為5×2矩陣。>>A=1:10A=12345678910>>B=reshape(A,[5,2])B=162738495103.1.8矩陣的運算函數【例3-11】將一個4×4方陣重構為一個2列矩陣。為第一個維度指定[],以使reshape自動計算合適的行數。>>A=magic(4)%構造4階魔方矩陣A=16231351110897612414151>>B=reshape(A,[],2)B=163510964152131187121413.1.8矩陣的運算函數(5)求矩陣的特征值設A為n階矩陣,是一個數,如果方程Ax=x存在非零解向量,則稱為A的一個特征值,相應的非零解向量x稱為與特征值對應的特征向量。MATLAB中求特征值和特征向量的函數為eig。【例3-12】求例3-8中的矩陣的特征值。>>A=[1,-1,1;5,-4,3;2,1,1]A=1-115-43211>>eig(A)ans=-3.5688-0.63562.20443.1.8矩陣的運算函數(6)求特征多項式MATLAB中使用poly函數來求矩陣的特征多項式,使用roots函數可以求特征多項式的根,特征多項式的根是矩陣的特征值。>>A=[123;456;780]

%構造矩陣AA=123456780>>p=poly(A) %求矩陣A的特征多項式p=1.0000-6.0000-72.0000-27.0000>>r=roots(p) %求特征多項式的根r=12.1229-5.7345-0.3884>>eig(A) %矩陣A的特征多項式的根是矩陣A的特征值ans=12.1229-0.3884-5.73453.1.8矩陣的運算函數除以上介紹的矩陣函數外,還有一些其他的矩陣函數。如下表:函數名功能det計算方陣的行列式的值inv方陣的逆陣diag抽取對角矩陣reshape向量重構矩陣或數組eig求特征值和特征向量poly求特征多項式rank矩陣的秩expm矩陣指數logm矩陣對數sqrtm矩陣開方可以把向量看作只有一行或一列的矩陣,也可以認為矩陣是由一組向量構成的,即可以將向量看作矩陣的組成元素。3.2向量向量分行向量和列向量,向量的構造方法有兩種:①按矩陣構造方式構造向量;②利用字符“:”生成具有固定步長的行向量;③利用函數linspace生成在一定數值區間內等間距產生一定數量元素的行向量。>>x=1:0.5:3%產生以1為初值、步長為0.5、不大于3的行向量x=1.00001.50002.00002.50003.0000>>y=1:5%產生以1為初值、默認步長為1、不大于5的行向量y=12345>>z=linspace(2,12,6)%產生以2為初值、12為終值、6個元素間距相等的行向量z=246810123.2向量列向量可通過行向量的轉置運算獲得。>>x=1:0.5:3%產生以1為初值、步長為0.5、不大于3的行向量x=1.00001.50002.00002.50003.0000>>y=x'y=1.00001.50002.00002.50003.00003.3數組數組就是相同數據類型的元素按一定順序排列的集合,是用于程序設計的數據結構中的概念,而并不同矩陣一樣是數學上的概念。【注意】對于MATLAB工作空間中的變量,MATLAB并不做矩陣和數組的區分,只是在調用不同的函數和運用不同的運算符時才將其進行分類和區分,進行相應的計算。MATLAB的乘法運算(*)、除法運算(/或\)和冪次方運算(^),指數函數expm、對數函數logm和開方函數sqrtm均是對矩陣進行的,即把矩陣作為一個整體來運算,其變量即矩陣。若對所有元素按單個元素進行運算,則這類運算即數組運算,其對應的變量即數組。3.3.1數組的創建與索引數組有一維數組、二維數組和多維數組,其創建與引用有所不同。(1)一維數組一維數組的創建與矩陣相同,每個數組元素由一個下標以“數組名(元素序號)”的形式來索引。例如,1×5一維數組索引示意圖如圖所示。(1)(2)(3)(4)(5)3.3.1數組的創建與索引對于一維數組A,A(1)表示一維數組A的第1個元素。>>A=[123]%一維數組的創建與矩陣相同A=123>>A0=A(1)A0=1(2)二維數組二維數組的創建與矩陣相同。在數組中,兩個維度由行和列表示,每個數組元素由兩個下標以“數組名(行序號,列序號)”的形式來索引。3.3.1數組的創建與索引(1,1)(1,2)(1,3)(1,4)(1,5)(2,1)(2,2)(2,3)(2,4)(2,5)(3,1)(3,2)(3,3)(3,4)(3,5)(4,1)(4,2)(4,3)(4,4)(4,5)對于二維數組A,A(1,2)表示二維數組A的第1行第2列元素。>>X=[12;34];%二維數組的創建與矩陣相同>>X12=X(1,2)X12=25×5二維數組索引示意圖3.3.1數組的創建與索引(3)多維數組MATLAB中的多維數組是指具有兩個以上維度的數組,是二維數組的擴展,使用額外的下標進行索引。例如,三維數組使用3個下標,以“數組名(行序號,列序號,頁序號)”進行索引。3.3.1數組的創建與索引創建多維數組:先創建二維矩陣,再進行擴展。例如,創建一個3×3×3的三維數組。首先定義一個3×3矩陣,作為三維數組中的第一頁。>>A=[123;456;789]A=1234567893.3.1數組的創建與索引然后添加第2頁:可將另一個3×3矩陣賦給第3個維度中的索引值2,語法為A(:,:,2),在第1個和第2個維度中使用冒號,以在其中包含賦值表達式右側的所有行和所有列。>>A(:,:,2)=[101112;131415;161718]A(:,:,1)=123456789A(:,:,2)=1011121314151617183.3.1數組的創建與索引若還有第3頁,則輸入以下命令>>A(:,:,3)=[192021;222324;252627]A(:,:,1)=123456789A(:,:,2)=101112131415161718A(:,:,3)=1920212223242526273.3.1數組的創建與索引要訪問多維數組中的元素,同樣需要使用整數下標,就像在向量和矩陣中一樣。例如,找到A中下標為(1,2,2)的元素,它位于A的第2頁上的第1行第2列>>AA(:,:,1)=123456789A(:,:,2)=101112131415161718A(:,:,3)=192021222324A122=A(1,2,2)A122=113.3.1數組的創建與索引若在第2個維度中使用索引向量[13],只訪問A的每頁上的第1列和第3列,則命令如下:>>C=A(:,[13],:)C(:,:,1)=134679C(:,:,2)=101213151618C(:,:,3)=1921222425273.3.1數組的創建與索引同樣,若要查找每頁的第2行和第3行,則也可以使用冒號運算符“:”創建索引向量:>>D=A(2:3,:,:)D(:,:,1)=456789D(:,:,2)=131415161718D(:,:,3)=2223242526273.3.2數組的基本算術運算MATLAB具有兩種不同類型的算術運算:數組運算和矩陣運算。矩陣運算遵循線性代數的法則,數組運算執行逐元素運算并支持多維數組。用句點字符“.”來區別數組運算與矩陣運算。MATLAB中常用的數組算術運算符運算符用途說明+加法A+B表示將A和B加在一起-減法A-B表示從A中減去B.*按元素乘法A.*B表示A和B的逐元素乘積.^按元素求冪A.^B表示包含元素A(i,j)的B(i,j)次冪的矩陣./數組右除A./B表示元素A(i,j)/B(i,j).\數組左除A.\B表示元素B(i,j)/A(i,j)3.3.2數組的基本算術運算(1)基本運算的數組兼容MATLAB中的大多數二元(兩個輸入)運算符和函數都支持具有兼容大小的數值數組。如果兩個輸入的維度大小相同或其中一個輸入的維度為1,則這些輸入將具有兼容的大小。例如,如果兩個數組執行按元素或函數運算時,MATLAB會將大小兼容的數組隱式擴展為相同的大小,再進行元素運算。3.3.2數組的基本算術運算(1)基本運算的數組兼容具有相同或兼容大小的標量、向量和數組的組合有如下幾種,其運算結果如下。①兩個大小完全相同的輸入:3.3.2數組的基本算術運算(1)基本運算的數組兼容具有相同或兼容大小的標量、向量和數組的組合有如下幾種,其運算結果如下。②其中一個輸入是標量:3.3.2數組的基本算術運算(1)基本運算的數組兼容具有相同或兼容大小的標量、向量和數組的組合有如下幾種,其運算結果如下。③一個輸入是數組或矩陣,另一個輸入是行向量或列向量:3.3.2數組的基本算術運算(1)基本運算的數組兼容具有相同或兼容大小的標量、向量和數組的組合有如下幾種,其運算結果如下。④一個輸入是列向量,另一個輸入是行向量:3.3.2數組的基本算術運算(2)數組加減運算數組加減運算可針對向量、矩陣和多維數組的對應元素執行逐元素運算。>>A=[111]A=111>>B=[123]B=123>>A+B%兩個數組的大小相同ans=2343.3.2數組的基本算術運算(2)數組加減運算如果一個操作對象是標量,而另一個操作對象不是標量,則MATLAB會將該標量隱式擴展為與另一個操作對象具有相同的大小(對數組的每個元素與標量進行加減運算)。>>A=[111]A=111>>A+3%將標量3隱式擴展為與操作對象A具有相同大小的數組,進行加法運算ans=4443.3.2數組的基本算術運算(2)數組加減運算如果操作對象的大小不相同,兩個輸入中的其中一個的維度為1,則這些輸入將具有兼容的大小。>>A=[111;222;333]A=111222333>>m=[246]m=246>>A-m%m隱式擴展為[246;246;246]ans=-1-3-50-2-41-1-33.3.2數組的基本算術運算(2)數組加減運算行向量和列向量的大小兼容。如果將一個1×3向量與一個2×1向量相加,則每個向量都會在MATLAB執行按元素進行加法運算之前隱式擴展為一個2×3矩陣。>>x=[123]x=123>>y=[10;15]y=1015>>x+yans=1112131617183.3.2數組的基本算術運算(2)數組加減運算如果兩個操作對象的大小不兼容,則會收到錯誤消息。>>A=[816;357;492]A=816357492>>B=[24]B=24>>A-B對于此運算,數組的大小不兼容。3.3.2數組的基本算術運算(3)數組乘法運算數組乘法運算的運算符為“.*”。數組運算是元素對元素的算術運算,運算符中的“.”可以理解為“元素”,通常將數組乘法運算稱為“點乘”。兩個具有相同行列數,且元素個數相同的矩陣的點乘運算如下:>>x=[123;456;789];>>y=[246;135;369];>>x.*y%x的元素與y的元素對應相乘ans=2818415302148813.3.2數組的基本算術運算兩個具有大小兼容性的操作對象:一個為3×3數組,一個為1×3數組。當兩者點乘時,1×3數組隱式擴展為3×3數組。>>x=[123;456;789];>>m=[246];>>x.*m%x數組點乘mans=2818820361432543.3.2數組的基本算術運算(4)數組除法運算數組除法分為數組左除和數組右除兩種,運算符分別為“.\”和“./”。MATLAB規定,A和B的大小必須相同或兼容。>>A=ones(2,3);>>B=[123;456];>>x=B.\A%A的元素除以B的對應元素x=1.00000.50000.33330.25000.20000.1667>>x=A./B%A的元素除以B的對應元素x=1.00000.50000.33330.25000.20000.16673.3.2數組的基本算術運算(4)數組除法運算數組除法分為數組左除和數組右除兩種,運算符分別為“.\”和“./”。MATLAB規定,A和B的大小必須相同或兼容。>>c=2;>>D=[123;456]; %創建2×3數組>>B=[123;456];>>x=c./D %結果的大小與數組大小相同:2×3數組2.00001.00000.66670.50000.40000.33333.3.2數組的基本算術運算若創建1×2行向量和3×1列向量,并將它們相除,則MATLAB會先將1×2行向量和3×1列向量隱式擴展為3×2數組,再進行對應元素的除法運算。>>c=2;>>a=1:2;>>b=(1:3)';>>a./b%a數組右除bans=1.00002.00000.50001.00000.33330.66673.3.2數組的基本算術運算(5)數組冪運算數組冪運算的運算符為“.^”。也稱為“點冪”。>>A=1:5;>>C=A.^2C=1491625>>A=[123;456;789];>>C=A.^-1C=1.00000.50000.33330.25000.20000.16670.14290.12500.11113.3.2數組的基本算術運算若列向量A有m個元素、行向量B有n個元素,則當進行兩者的點冪運算時,MATLAB先將列向量A和行向量B隱式擴展為m×n數組,再對兩個數組的對應元素進行冪運算。>>a=[23]a=23>>b=[1;2;3]b=123>>a.^bans=2349827【例3-13】創建一個1×2行向量和一個3×1列向量,以列向量中的各元素為指數,求行向量中各元素的冪。3.4

多項式多項式的運算與矩陣的運算是不

溫馨提示

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

評論

0/150

提交評論