MATLAB程序設計 課件 第1-3章 緒論、MATLAB基礎知識、MATLAB程序流程控制_第1頁
MATLAB程序設計 課件 第1-3章 緒論、MATLAB基礎知識、MATLAB程序流程控制_第2頁
MATLAB程序設計 課件 第1-3章 緒論、MATLAB基礎知識、MATLAB程序流程控制_第3頁
MATLAB程序設計 課件 第1-3章 緒論、MATLAB基礎知識、MATLAB程序流程控制_第4頁
MATLAB程序設計 課件 第1-3章 緒論、MATLAB基礎知識、MATLAB程序流程控制_第5頁
已閱讀5頁,還剩154頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1MATLAB程序設計《MATLAB程序設計》2第一章緒論1.1引言1.2MATLAB概述1.3工作環(huán)境1.4幫助系統(tǒng)1.5使用初步1.1引言《MATLAB程序設計》3科學研究和工程實踐中的計算問題如何解決?1.簡單計算:如常見的加減乘除可以采用口算、心算等人工方式;稍微復雜的也可借助算盤進行珠算;需要對數計算的問題可以采用計算尺;三角函數、指數運算等以及計算器進行;實際工程問題中,哪些是涉及了復雜、大量計算?工業(yè)機器人操作空間計算1.9液壓油管1.8髖關節(jié)驅動液壓缸1.7髖關節(jié)位移傳感器1.6背包下肢外骨骼機本體結構設計1.10膝關節(jié)驅動液壓缸1.5髖關節(jié)1.4大腿連桿1.12踝關節(jié)1.3膝關節(jié)1.1足底1.2踝關節(jié)1.11小腿連桿下肢外骨骼助力機器人關節(jié)運動學分析第一:復雜的矩陣計算及變換《MATLAB程序設計》62.復雜的計算問題當D=|A|≠0,方程組有解,可用Cramer法則求解。N階行列式的計算需要n!次乘法,求解n階線性方程組,共需要做(n+1)!次乘法。如n=20,則,需做:21!=5.10909×10192.復雜的計算問題第二:非線性微分方程《MATLAB程序設計》7第四:優(yōu)化問題求解第三:超越方程求解怎么辦?計算機編程!Maple《MATLAB程序設計》8MathematicaMATLABMathematica是一個綜合性數學軟件環(huán)境,可以把公式文檔和公式推導、計算過程表達在一個notebook里面,圖文并茂地表達一個復雜的過程,可以實現任意復雜的算法,也容易生成數據去檢驗。Maple和Mathematica軟件類似,以符號運算處理見長,可以給出解析解和任意精度解。二者在處理大數據的能力有待進一步提高。MATLAB以強大的矩陣計算和仿真能力聞名于世,尤其是針對具體工程問題有許多工具箱,省去編程麻煩,成為工程師和科研人員進行科學計算的優(yōu)選對象。1.2

MATLAB概述MATLAB:意為矩陣實驗室,是Matrix和Laboratory單詞的簡稱,用于算法開發(fā)、數據可視化、數據分析及數值計算的高級技術計算語言和交互式環(huán)境。

《MATLAB程序設計》9數據分析無線通信深度學習圖像處理與計算機視覺信號處理量化金融與風險管理機器人控制系統(tǒng)仿真MATLAB應用領域等其它MATLAB的主要優(yōu)勢是什么?1.編程環(huán)境

《MATLAB程序設計》10

接近于Windows的標準界面,人機交互性更強,操作更簡單。2.簡單易用《MATLAB程序設計》11具備面向對象編程的特點,基于C/C++的語法特征,但比其更簡單,程序可移植性好。3.強大的處理能力

包含大量經典和最新的計算算法(如人工智能和深度學習),可方便的實現計算功能,如矩陣運算、多維數組操作、方程組求解、最優(yōu)化計算、信號分析、數據統(tǒng)計分析、建模動態(tài)仿真?!禡ATLAB程序設計》124.數據可視化可視化功能是該軟件的一大特點,包括二維和三維的可視化、圖像處理、動畫和表達式作圖,還具有其它軟件所沒有的圖形光照處理、色度處理以及四維數據表現等。《MATLAB程序設計》135.強大的工具箱

《MATLAB程序設計》14眾多的工具箱,分為功能性工具箱和學科性工具箱,前者主要用來擴充其符號計算、圖示建模仿真、文字處理以及與硬件實時交互;后者專業(yè)性很強,由學科內的頂級專家編寫,用戶無需編寫這些學科內的基礎程序而直接進行高精尖的研究即可。6.程序接口

MATLAB可以方便調用和轉換成C、C++和Fortran程序其它軟件如LabVIEW也可以調用MATLAB程序,程序擴展能力強?!禡ATLAB程序設計》15MATLAB的發(fā)展簡史20世紀70年代中期,CleveMoler博士開發(fā)了調用EISPACK和LINPACK的FORTRAN子程序庫.在其給學生講授線性代數課程時,自己動手又編了程序接口,當時取名為MATLAB;1983年,JackLittle和CleveMoler等人采用C語言開發(fā)了第二代專業(yè)版,使其具備數值計算和數據顯示的功能。1984年,CleveMoler和JackLittle成立MathWorks公司,正式把MATLAB推向市場《MATLAB程序設計》16CleveMolerJackLittle早期是一年更新一次版本1992年,MATLAB4.0版本推出Simulink、Control、NeuralNetwork、SignalProcessing專用工具箱。1993年,通過購買Maple的使用權,以此為引擎,開發(fā)了符號計算工具箱,MATLAB4.1版具備符號運算功能,同推出Windows版,大受歡迎。1995年,MATLAB推出Linux版1997年,MATLAB5.0實現真正的32位運算,計算速度提高,圖形表示更佳到20世紀90年代,MATLAB已成為國際控制界的標準計算軟件。如今是一年更新兩次版本從2006年開始,版本號以年份進行區(qū)分,分為a和b,其中,a是3月份更新,b是9月份更新。且真正支持64位Windows系統(tǒng)運算目前最新版本是MATLAB2020a.《MATLAB程序設計》171.3工作環(huán)境《MATLAB程序設計》18雙擊MATLAB.exe,出現MATLABR2019b的啟動界面啟動后,其用戶界面如下所示工具欄命令行窗口工作區(qū)域1.3.1菜單/工具欄繪圖標簽APP標簽1.3.1菜單/工具欄主頁標簽1.新建腳本2.新建實時腳本3.新建4.打開5.導入數據6.保存工作區(qū)7.布局8.預設9.設置路徑10.幫助?區(qū)別腳本是命令或代碼的集合,而實時腳本是命令和文檔的集成,就是在原有m文件上加了交互式圖標,包含文本功能和控件。建議初學者采用默認值即可命令行窗口用于輸入命令、并顯示除圖形以外所有的執(zhí)行結果?!?gt;>”是命令提示符,表示MATLAB處于準備狀態(tài)。輸入命令后按下Enter鍵后,MATLAB執(zhí)行該命令并顯示結果。fx為函數瀏覽器按鈕,可快速查找函數《MATLAB程序設計》211.3.2命令行窗口如果命令錯寫成X=(log(3)+srt(11))/2,則MATLAB在編譯時會給出如圖的紅色錯誤信息。

重新輸入函數(命令)即可MATLAB被稱為“演算紙式”的編程語言《MATLAB程序設計》221.3.2命令行窗口若一個公式或命令行很長,如下,需要分兩行或多行輸入怎么辦?《MATLAB程序設計》231.3.2命令行窗口如圖,第一行后加“3個小黑點”并按下Enter鍵,在下一行接著輸入即可“3個小黑點”為“續(xù)行符”《MATLAB程序設計》24一個命令行可以輸入一個命令,也可以輸入多個命令,各命令之間用分號或逗號分割;1.3.2命令行窗口命令后如果有分號,則該命令執(zhí)行后的結果不顯示在命令行窗口;工作區(qū)也稱為工作空間,用來存儲各種變量和結果的內存空間,如圖。《MATLAB程序設計》251.3.3工作區(qū)窗口變量的屬性可觀察,紅色方框處點擊右鍵,在彈出的屬性中對“大小”、“最大值”、“最小值”進行勾選,即可此窗口自動記錄自系統(tǒng)安裝以來所有使用過的命令,供用戶查詢方法:點擊“布局”,在屬性“命令歷史記錄”中勾選“??俊币嗫汕宄顨v史記錄《MATLAB程序設計》261.3.4命令歷史記錄窗口《MATLAB程序設計》271.4.1MATLAB幫助窗口1、單擊“主頁”選項卡“資源”命令組的“?”按鈕2、單擊“幫助”下拉按鈕并選擇“文檔”命令3、按F1功能鍵,再單擊“打開幫助瀏覽器”鏈接4、在命令行窗口輸入doc命令1.4幫助系統(tǒng)《MATLAB程序設計》28例如,開方運算命令sqrt的使用方法。1.4.1MATLAB幫助窗口《MATLAB程序設計》291、help命令

最基本方法,完全匹配,需要明確某函數或命令的準確名字,不準確就找不到1.4.2MATLAB幫助命令《MATLAB程序設計》302、lookfor命令

對搜索范圍內的所有m文件進行關鍵字搜索,條件比較寬松。1.4.2MATLAB幫助命令3、模糊查詢

只需輸入命令的前幾個字母,然后按下Tab鍵,系統(tǒng)會列出所有以這幾個字母開頭的命令。后續(xù)使用help命令,作進一步的查詢。1.5使用初步1.繪制如右式描述的二維曲線《MATLAB程序設計》31MATLAB程序如下:t=0:0.1:6;x=t.*sin(3*t);y=t.*sin(t).*sin(t);plot(x,y)1.5使用初步2.求高次方程的根:《MATLAB程序設計》323.求解線性方程組MATLAB程序計算結果33MATLAB程序設計《MATLAB程序設計》34第二章MATLAB基礎知識2.1數據類型2.2變量和數據操作2.3MATLAB矩陣2.4MATLAB運算2.5矩陣分析2.1數據類型《MATLAB程序設計》35MATLAB功能強大的一個原因在于有豐富的數據類型數據類型數值類型邏輯類型字符串函數句柄結構體單元數組面向對象的用戶類和Java類還有用于高級交叉編程的數據類型《MATLAB程序設計》362.1.1數值類型數值型數據是最基本的一類數據數值類型數據整型數據復(數)型數據浮點(實)型數據無窮量和非數值量系統(tǒng)給每種數據類型分配不同字節(jié)的內存單元,由此也決定了取值范圍不同《MATLAB程序設計》372.1.1數值類型1.整型數據整型數據是不帶小數的數,分為帶符號整數和無符號整數,每一種又根據所占字節(jié)的不同分為8位、16位、32位、64位整型數。注意:表中的轉換函數是將不同數據類型的整數進行相互轉換,超出范圍時,會出錯;例1:請在MATLAB命令行窗口輸入三條命令,觀察結果并比較差異:x=int8(-3),y=uint8(-3),z=int8(129)《MATLAB程序設計》382.1.1數值類型1.整型數據還有對非整數(或者浮點數)的取整操作函數,如下表有兩種類型,分別是單精度(Single)和雙精度(double)浮點數。區(qū)別如下:注意:1、MATLAB中默認的類型是雙精度浮點類型,單精度浮點數不能與整數型數據進行有關運算。2、浮點數表示的實際數值是有限且離散的(但不影響使用)《MATLAB程序設計》392.1.1數值類型2、浮點型數據復型數據包括實部和虛部兩部分,兩部分默認都是雙精度類型。虛數單位用i或j表示都可以,創(chuàng)建時可以按照復數形式進行輸入;6+5i、6+5j、6+5*i、6+5*j表示同一個復數。與復數有關的6個函數,功能如表《MATLAB程序設計》402.1.1數值類型3、復型數據MATLAB使用Inf和-Inf表示正無窮量和負無窮量,一般是由于運算溢出,產生了超出雙精度浮點數數值范圍的結果。NaN表示非數值量,是由于0/0或者Inf/Inf等類型的非正常運算而產生的。在MATLAB命令行窗口中輸入以下命令:a=3/0,b=log(0),c=Inf-Inf結果為:a=Inf,b=-Inf,c=NaN《MATLAB程序設計》412.1.1數值類型4、無窮量(Inf)和非數值量(NaN)邏輯型數據是指布爾類型的數據及數據之間的邏輯關系除了傳統(tǒng)的數學運算外,MATLAB還支持關系運算和邏輯運算,其目的是提供求解真/假命題的答案。作為所有關系和邏輯表達式的輸入,MATLAB把任何非0數值當做真,把0當做假;所有關系和邏輯表達式的輸出,對于真,輸出為1,對于假,輸出為0;《MATLAB程序設計》422.1.2邏輯類型《MATLAB程序設計》431、使用true和false函數直接生成2、通過關系運算或邏輯運算產生2.1.2邏輯類型生成邏輯數值的方法類別符號說明關系操作<小于<=小于或等于>大于>=大于或等于==等于~=不等于邏輯運算&與|或~非字符串能夠顯示在屏幕上英文或中文字符,創(chuàng)建的方式:等號右邊在英文的狀態(tài)下輸入單引號,在單引號內輸入你想要顯示的文本。一個字符串是存儲在一個行向量中的文本,這個行向量中每一個元素都代表一個字符(ASCII碼)。可以通過它的下標對字符串數組做具體的訪問?!禡ATLAB程序設計》442.1.3字符和字符串屬于間接調用函數的一種方法創(chuàng)建函數句柄需要用到操作符@。句法格式如下:

function_handle=@function_filename在使用過程中,和其它函數一樣,需要使用輸入參數,如圖所示《MATLAB程序設計》452.1.4函數句柄把內部函數cos創(chuàng)建成函數句柄調用句柄函數對x進行計算生成待使用的輸入參數《MATLAB程序設計》46結構體相當于數據容器,可以將相關的、不同類型的數據封裝在一起。由字段名和字段值組成,如圖創(chuàng)建方法(1):使用點號(.)運算符如創(chuàng)建一個名為zhangsan的學生成績信息的結構體。如果再增加一個學生lisi的學生成績2.1.5結構體類型字段名字段值《MATLAB程序設計》47創(chuàng)建方法(2)使用struct函數創(chuàng)建:其格式如下:s=struct(‘field1’,value1,‘field2’,value2,……)2.1.5結構體類型創(chuàng)建創(chuàng)建成功的提示成功訪問結構體內部的數據《MATLAB程序設計》481、數組類型

2.1.6單元數組類型在MATLAB中進行運算的所有數據類型,都是按照數組及矩陣的形式進行存儲和運算的定義是廣義的,元素是任意的數據類型,如數值、字符串、指針等數組的創(chuàng)建方法:(1)中括弧“[]”或冒號“:”(2)預定義函數創(chuàng)建:如linspace()《MATLAB程序設計》49單元數組是一種無所不包的廣義矩陣,組成單元數組的每一個元素稱為單元,每一個單元可以包括一個任意數組。創(chuàng)建方法:(1)使用賦值語句,注意使用的是“{}”,與數組不同(2)利用cell函數創(chuàng)建2.1.6單元數組類型2、單元(cell)數組類型

創(chuàng)建2*2大小的空單元數組創(chuàng)建成功的提示分別給單元數組賦值2.2變量和數據操作《MATLAB程序設計》502.2.1變量與賦值命了名的內存單元就是變量,代表了一個或若干個內存單元。變量命名規(guī)則:

第一:字母開頭,后接字母、數字或下劃線的字符序列;如my12、my_12均合法,12my、_my12均不合法第二:最多63個字符,超出無效;

第三:變量名區(qū)分大小寫;如myvar與myVar不是同一個變量注意:MATLAB提供的標準函數以及命令都必須使用小寫字母。《MATLAB程序設計》512.2.1變量與賦值賦值賦值語句有兩種形式:(1)變量=表達式(2)表達式

說明:(1)分號是不顯示結果,%是注釋前面的語句

(2)sin、sqrt、cos、abs均是MATLAB提供的數學函數,pi和i是預定義變量

例題:計算的值,其中,并把結果賦值給變量z,并顯示計算結果。顯示z的值《MATLAB程序設計》52在MATLAB工作空間中,由系統(tǒng)本身定義的變量注意:預定義變量有特殊含義,在使用時盡量避免對它們重新賦值。如i、j兩個變量,如果非要賦值,則要確保在后面的運算中不涉及到復數運算2.2.2預定義變量預定義變量含義預定義變量含義ans計算結果的默認賦值變量nargin函數輸入參數個數pi圓周率π的近似值nargout函數輸出參數個數i,j虛數單位lasterr存放最新的錯誤信息Inf,inf無窮大,如1/01的結果lastwarn存放最新的警告信息NaN,nan非數,如0/0,inf/infeps機器零閾值工作區(qū)窗口專門用于內存變量的管理,可以刪除、觀察、修改!《MATLAB程序設計》532.2.3內存變量的管理1、內存變量的刪除與修改第一:在工作區(qū)窗口的右鍵快捷菜單中選擇“新建”命令,并給變量命名;第二:在工作區(qū)中雙擊該變量,打開變量編輯器;第三:在空白表格中填寫元素值,表格的每一個方格對應矩陣一個元素?!禡ATLAB程序設計》542.2.3內存變量的管理2、大矩陣輸入工作空間中的一些有用或者重要變量如何長久的保留下來?MAT文件是MATLAB中保存變量數據的一種標準格式,屬于二進制文件,擴展名為.mat。MAT文件的生成和裝入由save和load兩條命令完成,常用格式如下:savefilename變量1變量2……loadfilename《MATLAB程序設計》552.2.3內存變量的管理3、內存變量文件的導出與導入注意:1)三角函數的自變量是弧度和角度的區(qū)別?2)rem和mod函數的區(qū)別?3)符號函數的用法?《MATLAB程序設計》56數學中的大部分運算MATLAB全部可以實現2.2.4常用數學函數如果函數的自變量為矩陣,MATLAB會如何處理呢?自變量是數組或矩陣,函數的基本操作后仍以數組或矩陣的形式顯示結果《MATLAB程序設計》572.2.4常用數學函數《MATLAB程序設計》582.2.5數據的輸出格式1)、常數的表示方法日常記數法:如3.1415、-935i、3+5i科學記數法:如1.78e2、6.7325E2i、1234e-7好處:當我們要標記或運算某個較大或較小且位數較多時,用科學記數法免去浪費很多空間和時間數據在內部是以雙精度保存,但輸出的格式可以使用format命令進行設置或改變。format格式如下:format格式符《MATLAB程序設計》592.2.5數據的輸出格式2.3MATLAB矩陣《MATLAB程序設計》60

數組與矩陣數學上,定義m×n個數排成m行n列的數表,稱為矩陣在程序設計中,為了處理方便,把具有相同類型的若干變量按有序的形式組織起來的一種形式,即同類數據元素的集合,稱為數組。因此,矩陣以數組的方式存在,一維數組相當于向量,二維數組相當于矩陣《MATLAB程序設計》612.3.1矩陣的建立(一)賦值法——簡單矩陣1、直接輸入法:將矩陣的元素用方括號括起來,同一行的元素用空格或逗號(英文狀態(tài))隔開,行與行之間用分號(英文狀態(tài))隔開

說明:亦可以采用此方法建立復數矩陣例如:A=[2,3,5;3,6,10]B=[235;3610]V1=[8,59,60,33]V2=[5;8;3;4;9]《MATLAB程序設計》622、利用冒號或linspace命令產生一維矩陣(向量)2.3.1矩陣的建立3、小矩陣拼接大矩陣例如:A=[1,2,3;4,5,6;7,8,9]B=[1:2:5;4:2:8;7:3:13]C=[A,B;B,A]《MATLAB程序設計》63(二)指令構建法——特殊矩陣特殊矩陣1、通用特殊矩陣2、專門學科的特殊矩陣3、稀疏矩陣零矩陣幺矩陣單位矩陣隨機矩陣魔方矩陣范徳蒙矩陣希爾伯特矩陣拓普利茲矩陣伴隨矩陣2.3.1矩陣的建立產生通用特殊矩陣的函數有:這幾個函數的調用相似,以zeros函數為例說明:《MATLAB程序設計》641、通用的特殊矩陣2.3.1矩陣的建立(1)zeros(m):產生m×m的零矩陣;(2)zeros(m,n):產生m×n的零矩陣當,m=n時,等同于zeros(m);(3)zeros(size(A)):產生與矩陣A同樣大小的零矩陣;(1)魔方矩陣中國的傳統(tǒng)游戲,又稱幻方。該矩陣每一行、每列以及兩條對角線的元素和都相等,對于n階魔方矩陣,其元素有1,2,3,……,n2-1,n2等共n2個整數。命令格式:magic(n)說明:該命令只有一個輸入參數n,為魔方的階數;《MATLAB程序設計》652.3.1矩陣的建立2、用于專門學科的特殊矩陣例如:A=magic(3)B=magic(4)(2)范徳蒙(Vandermonde)矩陣該矩陣是法國數學家范德蒙提出的一種各列為幾何級數的矩陣。其特點是:最后一列全為1,倒數第二列為一個指定向量,其它各列是其后一列與倒數第二列對應元素的乘積。范德蒙矩陣應用之一就是在糾錯編碼中,常用的糾錯碼Reed-solomon編碼中冗余塊的編碼采用的即為范德蒙矩陣。命令格式:vander(V)說明:V為輸入參數向量《MATLAB程序設計》662.3.1矩陣的建立2、用于專門學科的特殊矩陣(3)希爾伯特(Hilbert)矩陣希爾伯特矩陣是一種數學變換矩陣,正定,且高度病態(tài)(即任何一個元素發(fā)生一點變動,整個矩陣的行列式的值和逆矩陣都會發(fā)生巨大變化),病態(tài)程度和階數相關。命令格式:hilb(n)說明:n為輸入參數,希爾伯特矩陣的階數《MATLAB程序設計》672.3.1矩陣的建立2、用于專門學科的特殊矩陣稀疏矩陣:大量的零元素和極小量的非零元素構成較大的矩陣;矩陣規(guī)模都比較大,為節(jié)省內存存儲空間,需要進行處理。(1)矩陣存儲方式:完全存儲方式和稀疏存儲方式:完全存儲方式:將所有元素按列一個不少地存儲稀疏存儲方式:僅存儲矩陣中所有的非零元素及其位置,即行號和列號《MATLAB程序設計》682.3.1矩陣的建立3、稀疏矩陣《MATLAB程序設計》69第一:將完全存儲方式轉換成稀疏存儲方式

函數A=sparse(S),將矩陣S轉換成稀疏存儲方式的矩陣A;(2)稀疏存儲方式的產生命令如下:X=[20000;00000;00050;0100-1;0000-5]A=sparse(X)2.3.1矩陣的建立《MATLAB程序設計》70第二:產生稀疏存儲矩陣

函數B=spconvert(A),將A所描述的稀疏矩陣轉換成稀疏存儲矩陣B;注意;A為一個m*3或m*4的矩陣。(2)稀疏存儲方式的產生2.3.1矩陣的建立命令如下:A=[221;31-1;433;538;6612]B=spconvert(A)1、矩陣元素的引用方式:通過下標來引用,如A(3,4),可以對A中任意一個元素重新賦值,如A(3,1)=0與矩陣有關的三個命令《MATLAB程序設計》712.3.2矩陣的拆分size(A):求矩陣規(guī)模大小length(A):給出矩陣長度(最大值)ndims(A):求矩陣的維數《MATLAB程序設計》722、利用冒號表達式獲得子矩陣子矩陣:是指矩陣中的一部分元素構成的矩陣(1)單個冒號來作為行下標或列下標時,他代表的是全部行或全部列;(2)A(i:i+m,k:k+n)表示第i行到第i+m行與第k列到第k+n列的所有元素2.3.2矩陣的拆分《MATLAB程序設計》733、改變矩陣的形狀

命令:reshape(A,m,n)2.3.2矩陣的拆分命令如下:B=reshape(A,5,4)將A矩陣變成5行4列的新矩陣B2.4MATLAB運算《MATLAB程序設計》74

MATLAB的運算都是針對矩陣而言的,既有矩陣意義下的運算,也有針對矩陣元素的運算(單個數據運算算是特例),但就運算的性質而言,基本上分為算術運算、關系運算和運算邏輯三類?;具\算:+、-、*(乘)、/(右除)、\(左除)、^(乘方)2.4.1算術運算《MATLAB程序設計》752.4.1算術運算注意(1):同型矩陣可以做加減法,對應元素直接相加減即可;不同型,則給出錯誤信息,不再進行計算。注意(2):單個元素或同長度行向量可以和矩陣做加減,即矩陣中每一個或每一行元素與該元素或行向量進行加減。例如:A=[2,3,5;3,6,10];B=[123;456];C=A-BD=[12]E=A+D例如:A=[2,3,5;3,6,10];B=[123];C=A-1D=A-B一、基本算術運算——矩陣加減運算(+,-)《MATLAB程序設計》762.4.1算術運算例如:A=[1,2,3;4,5,6]B=[1,2;3,4;5,6]C=A*BD=A*C一、基本算術運算——矩陣乘法(符號為“*”)注意(1):如果A為m×n矩陣,B為n×p矩陣,則C=A*B為m×p矩陣,如果不滿足條件,兩個矩陣不能相乘,系統(tǒng)會給出出錯信息注意(2):標量可以和矩陣做乘法,即矩陣中每一個元素與該元素進行乘?!禡ATLAB程序設計》772.4.1算術運算例如:A=[1,2;1,3];B=[1,0;1,2];C=A\BD=A/B一、基本算術運算——矩陣除法(左除‘\’和右除‘/’)注意(1):矩陣A必須是非奇異方陣,此時A\B等效于A的逆左乘B矩陣,而A/B相當于矩陣A乘以矩陣B的逆,此時矩陣的規(guī)模要一致。(2)當A和B都是標量時,此時A\B等效于A的倒數乘以B,而A/B相當于A乘以B的倒數。如果矩陣為方陣,則可以進行冪計算,格式為A^x,其中x為標量《MATLAB程序設計》782.4.1算術運算一、基本算術運算——矩陣的乘方(符號為“^”)例如:A=[2,3,8;3,1,-1;5,0,4];B1=A^2B2=A^3B3=A^0.1特殊運算,在有關算術運算符(+、-、*、/、\、^)前面加點,所以叫點運算兩矩陣進行點運算是指它們對應的元素進行相關運算,因此,要求兩矩陣的規(guī)模和維數相同?!禡ATLAB程序設計》792.4.1算術運算二、點運算例如:A=[1,2;1,3];B=[1,0;1,2];C1=A*BC2=A.*BC3=A./BC4=A.^B《MATLAB程序設計》80第一:當兩個是標量時,直接比較兩數大小,如關系成立,則結果返回1,否則,返回0;第二:當兩個是同種類型的矩陣,比較是按照兩矩陣相同位置的元素進行。第三:當一個是標量,另一個是矩陣,則把標量分別與矩陣元素相比,結果是與矩陣同型的0、1矩陣;運算法則2.4.2關系運算類別符號說明關系運算<小于<=小于或等于>大于>=大于或等于==等于~=不等于六種關系運算《MATLAB程序設計》81例

產生5階隨機方陣A,其元素為[10,90]區(qū)間的隨機整數,然后判斷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是進行等于(==)比較的結果矩陣?!禡ATLAB程序設計》82

3種邏輯運算符:邏輯與——‘&’,邏輯或——‘|’,邏輯非——‘~’2.4.3邏輯運算(1)非零元素為真,用1表示,零元素為假,用0表示。(2)若參與邏輯運算的是兩個同維矩陣,那么運算將對矩陣相同位置上的元素按標量規(guī)則逐個

進行。(3)若參與邏輯運算的一個是標量,一個是矩陣,那么運算將在標量與矩陣中的每個元素之間按標量規(guī)則逐個進行。(4)在算術、關系、邏輯運算中,算術運算優(yōu)先級最高,邏輯運算優(yōu)先級最低。運算規(guī)則《MATLAB程序設計》83建立矩陣A。A=[4,-65,-54,0,6;56,0,67,-45,0]例題:建立矩陣A,然后找出大于4的元素的位置,并輸出相應位置元素。(2)找出大于4的元素的位置。k=find(A>4)(3)輸出相應位置的元素A(k)《MATLAB程序設計》842.5.1對角陣和三角陣1.對角陣:只有對角線上有非0元素的矩陣,或說若一個方陣除了主對角線上的元素外,其余元素都等于零,則稱之為對角陣。形式如下所示:注意:如果上式中各非零元素均為1,則稱單位矩陣,記為In,如上所示:《MATLAB程序設計》852.5.1對角陣和三角陣(1)提取矩陣的對角線元素設A為m×n矩陣,diag(A)函數用于提取矩陣A主對角線元素,產生一個具有min(m,n)個元素的列向量。diag函數還有一種形式diag(A,k),其功能是提取第k條對角線的元素;例如:A=[1,2,3;4,5,6];B=diag(A)C1=diag(A,1)C2=diag(A,-1)《MATLAB程序設計》86設V為具有m個元素的向量,diag(V)將產生一個m×m對角矩陣,其主對角線元素即為向量V的元素。

diag函數也有另一種形式diag(V,k),其功能是產生一個n×n(n=m+|k|)對角陣,其第k條對角線的元素即為向量V的元素。

(2)構造對角矩陣例如:V=[1,2,-3];C1=diag(V)C2=diag(V,-1)2.5.1對角陣和三角陣《MATLAB程序設計》87

三角陣又進一步分為上三角陣和下三角陣,所謂上三角陣,即矩陣的對角線以下的元素全為0的一種矩陣,而下三角陣則是對角線以上的元素全為0的一種矩陣。2.5.1對角陣和三角陣2.三角陣(2)下三角矩陣提取矩陣A的下三角矩陣的函數是tril(A)和tril(A,k)。其用法與提取上三角矩陣的函數triu(A)和triu(A,k)完全相同。(1)上三角矩陣求矩陣A的上三角陣的函數是triu(A)。triu(A)函數也有另一種形式triu(A,k),其功能是求矩陣A的第k條對角線以上的元素?!禡ATLAB程序設計》882.5.2矩陣的轉置與旋轉1.矩陣的轉置

把原矩陣的第i行變成目標矩陣的第i列,轉置運算符為小數點后接單撇號,即(.’)例如:A=[1,2,-3;4,5,6];B=A.’還有一種轉置叫共軛轉置,其運算符為單撇號,它在轉置的基礎上還要取每個數的復共軛,如果原矩陣為實數矩陣,則二者的結果是一致的?!禡ATLAB程序設計》894.矩陣的上下翻轉:與左右翻轉類似,對矩陣A實施上下翻轉的函數是flipud(A)。2.5.2矩陣的轉置與旋轉2.矩陣的旋轉:利用函數rot90(A,k)將矩陣A旋轉90o的k倍,當k為1時可省略。3.矩陣的左右翻轉:對矩陣實施左右翻轉是將原矩陣的第一列和最后一列調換,第二列和倒數第二列調換,…,依次類推。MATLAB對矩陣A實施左右翻轉的函數是fliplr(A)。

例如:A=[1,2,3;4,5,6;7,8,9];B1=rot90(A)B2=fliplr(A)B3=flipud(A)《MATLAB程序設計》902.5.3矩陣的逆與偽逆

對于一個方陣A,如果存在一個與其同階的方陣B,使得:A·B=B·A=I

(I為單位矩陣)則稱B為A的逆矩陣,當然,A也是B的逆矩陣。

求一個矩陣的逆是一件非常煩瑣的工作,容易出錯,但在MATLAB中,求一個矩陣的逆非常容易。求方陣A的逆矩陣可調用函數inv(A)。1.矩陣的逆例如:A=[1,2,3;1,4,9;1,8,27];B=inv(A)《MATLAB程序設計》912.5.3矩陣的逆與偽逆2.矩陣的偽逆

如果矩陣A不是一個方陣,或者A是一個非滿秩的方陣時,矩陣A沒有逆矩陣,但可以找到一個與A的轉置矩陣A’同型的矩陣B,使得:A·B·A=A,B·A·B=B此時稱矩陣B為矩陣A的偽逆,也稱為廣義逆矩陣。

在MATLAB中,求一個矩陣偽逆的函數是pinv(A)?!禡ATLAB程序設計》922.5.4方程的行列式在MATLAB中,求方陣A所對應的行列式的值的函數是det(A)例如:A=[1,2,3;1,0,3;-3,4,1]B=det(A)

把一個方陣看作一個行列式,并對其按行列式的規(guī)則求值,這個值就稱為矩陣所對應的行列式的值?!禡ATLAB程序設計》932.5.5矩陣的秩與跡2.矩陣的跡

1.矩陣的秩

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

矩陣的跡等于矩陣的對角線元素之和,也等于矩陣的特征值之和。在MATLAB中,求矩陣的跡的函數是trace(A)。例如:A=[1,2,3;1,0,3;-3,4,1];r=rank(A)trace(A)《MATLAB程序設計》94

計算函數在MATLAB中,求向量范數的函數為:(1)norm(V)或norm(V,2):計算向量V的2—范數。(2)norm(V,1):計算向量V的1—范數。(3)norm(V,inf):計算向量V的∞—范數。2.5.6向量和矩陣的范數

矩陣或向量的范數用來度量矩陣或向量在某種意義下的長度。范數有多種方法定義,其定義不同,范數值也就不同。1.向量的3種常用范數:2.矩陣的范數及其計算函數MATLAB提供了求3種矩陣范數的函數,其函數調用格式與求向量的范數的函數完全相同。V=[-1,1/2,1];v1=norm(V,1),v2=norm(V),v3=norm(V,inf)《MATLAB程序設計》952.5.7矩陣的特征值與特征向量(3)[V,D]=eig(A,‘nobalance’):與第2種格式類似,但第2種格式中先對A作相似變換后求矩陣A的特征值和特征向量,而格式3直接求矩陣A的特征值和特征向量。對于n階方陣A,如果存在數λ和向量v,使得等式A*v=λ*v成立,則稱數λ為A的特征值,向量v稱為A的特征向量。在MATLAB中,計算矩陣A的特征值和特征向量的函數是eig(A),常用的調用格式有:(1)

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

[V,D]=eig(A):求矩陣A的全部特征值,構成對角陣D,并求A的特征向量構成V的列向量?!禡ATLAB程序設計》96例如:A=[1,1,0.5;1,1,0.25;0.50.25,2];[VD]=eig(A)說明(1):3個特征值為-0.0166、1.4801、2.5365,各特征值對應的特征向量為V的各列構成的向量。說明(2):一個矩陣的特征向量有無窮多個,eig函數只找出其中的n個,其它特征向量可以由這n個特征向量進行線性組合。97MATLAB程序設計《MATLAB程序設計》98第三章MATLAB程序流程控制3.1M文件3.2程序控制結構3.3函數文件3.4程序調試與優(yōu)化《MATLAB程序設計》993.1M文件1.M文件:使用MATLAB語言編寫的程序,稱為M文件。實質上,M文件是由若干MATLAB命令或函數組合在一起的文本集合。作用:可以完成某些操作(加減乘除等復雜運算),也可以實現某種算法(粒子群算法、最小二乘法等)命令(Script)文件函數(function)文件實時腳本(livescript)文件M文件《MATLAB程序設計》1002.命令文件僅僅是一系列命令的集合注意:(1)運行這一部分命令時僅需要輸入文件名即可;

(2)MATLAB提供的有專門的M文件編輯器(兩種方式打開M文件編輯器)分別如下:

第一:在主頁中點擊“新建”,然后選擇“腳本”,即可進入

第二:在命令行輸入edit,回車后則可直接進入編輯器

M文件編輯區(qū)《MATLAB程序設計》101MATLAB程序如下:(1)打開M文件編輯器(2)輸入如下所示的命令;(3)保存文件,并將其命名為jiajiafa.m舉例:編寫一個矩陣相加減的命令文件在命令行窗口輸入jiajianfa,直接回車,結果如圖注意:工作區(qū)各變量的值均存在《MATLAB程序設計》102

也是命令的集合,但第一行必須以英文function開始,作為函數文件的標志3.函數文件與命令文件的主要區(qū)別一般來說,函數文件是為了實現某種特定功能而編寫的。(1)必須以function聲明,一般帶有輸入參量和返回值(1)不使用function聲明,一般不帶有輸入參量和返回值;(2)文件中的變量不會保留在工作區(qū)(2)文件中的變量會保留在工作區(qū)(3)不可以直接運行,必須函數調用的方式(3)可以直接運行函數文件命令文件《MATLAB程序設計》103舉例:編寫將華氏溫度f轉換成攝氏溫度c的函數文件functionc=ftoc(f)c=5*(f-32)/9;在命令行窗口輸入ftoc(70),執(zhí)行結果如圖:MATLAB程序如下:(1)在M文件編輯器中輸入如下命令;(2)保存文件,并將其命名為ftoc.m注意(1)觀察工作區(qū)變量(2)注意文件的保存路徑完整的函數文件組成《MATLAB程序設計》104在線幫助文本區(qū):函數主體:函數聲明行:編寫和修改記錄:H1行:《MATLAB程序設計》1054.實時腳本文件除了基本的程序代碼,還包括格式化文本、方程式、超鏈接和圖像,而且運行代碼時能實時顯示輸出結果,增強了代碼的描述效果。

還可以將mlx文件轉換輸出為pdf等用于分享?!禡ATLAB程序設計》106第一:點擊“新建實時腳本”,即打開如圖所示的“實時編輯器”如何建立mlx文件第二:點擊

“文本”,輸入文本、公式等非M代碼部分;《MATLAB程序設計》107第三:點擊“代碼”,輸入命令;《MATLAB程序設計》108《MATLAB程序設計》109第四:點擊“運行”,顯示結果;《MATLAB程序設計》110第五:點擊“保存”的下拉菜單“導出為pdf”《MATLAB程序設計》1113.2程序結構定義:編程語言提供表達復雜控制流程的手段,又被稱為編程語言的控制結構。程序是一個語句序列執(zhí)行程序就是按特定的次序執(zhí)行程序中的語句。程序中執(zhí)行點的變遷稱為控制流程,當執(zhí)行到程序中的某一條語句時,也說控制轉到了該語句。順序結構循環(huán)結構選擇結構程序控制結構《MATLAB程序設計》1121.順序結構定義:按照程序中語句的排列順序依次執(zhí)行的程序結構。舉例:華氏溫度轉換為攝氏溫度的M文件注意:input:用戶從鍵盤輸入數據的常用函數disp:系統(tǒng)的輸出函數《MATLAB程序設計》113定義:根據條件成立或不成立,分別執(zhí)行不同的語句的程序結構,又稱為分支結構;

組成:if結構、switch-case結構、try-catch結構2.選擇結構2.1if結構單分支:if-end雙分支:if-else-end多分支:if-elseif-elseif-……-end《MATLAB程序設計》114(2)雙分支if-else-end語句:分段函數,要求從任意從鍵盤輸入一個數并計算結果if條件成立

語句組1else語句組2endif條件成立

語句組end(1)單分支if-end語句:《MATLAB程序設計》115(3)多分支if語句if條件1語句組1elseif條件2語句組2……elseif條件m語句組melse語句nend舉例:輸入一個字符,如為大寫字母,則輸入其對應的小寫字母;如為小寫字母,則輸出對應的大寫字母;如為數字,則輸出對應的數值;如為其它字符,則原樣輸出?!禡ATLAB程序設計》116程序如下:《MATLAB程序設計》1172.2.switch語句switch表達式

case值1

語句組1case值2語句組2……case值m語句組motherwise語句組nend《MATLAB程序設計》118舉例if語句和switch語句的差異《MATLAB程序設計》119if語句switch語句比較復雜,特別是嵌套使用可讀性強,容易理解要調用strcmp函數比較不同長度的字符串可以比較不同長度的字符串可以檢測相等和不相等僅檢測相等《MATLAB程序設計》1202.3.try語句一種試探性執(zhí)行語句,提供了一種捕獲錯誤的機制:try語句組1catch語句組2end舉例:矩陣乘法運算要求兩矩陣的維數相容,否則會出錯。先求兩矩陣的乘積,如果出錯,則自動轉去求兩矩陣的點乘《MATLAB程序設計》1213.循環(huán)結構3.1.for語句for循環(huán)變量=表達式1:表達式2:表達式3循環(huán)體語句end初值步長終值for循環(huán)變量=矩陣表達式循環(huán)體語句end注意:《MATLAB程序設計》122第一:針對向量的每一個元素執(zhí)行一次循環(huán)體;第二:可以在循環(huán)體內修改循環(huán)變量的值;第三:3個表達式只被計算一次,一旦確定不可改變;第四:循環(huán)退出后,循環(huán)變量的值就是向量元素中最后一個值;第五:向量為空,循環(huán)體不執(zhí)行;舉例一個三位整數,各位數字的立方和等于該函數本身,則稱該數為水仙花數,輸出全部的水仙花數?!禡ATLAB程序設計》123程序如下:《MATLAB程序設計》1243.2.while語句while條件循環(huán)體語句end利用while循環(huán)實現S=1+2+…+100的值:注意和for循環(huán)的區(qū)別《MATLAB程序設計》1253.3程序的流程控制breakpausecontinue常用的流程控制命令returnechowarningerror《MATLAB程序設計》1261.break命令終止程序循環(huán),通常和if語句結合使用在多層嵌套循環(huán)中,只終止最內層的循環(huán)《MATLAB程序設計》1272.continue命令控制跳過循環(huán)體中的某些語句。當在循環(huán)體內執(zhí)行到該語句時,程序將跳過循環(huán)體中所有剩余的語句,繼續(xù)下一次循環(huán)。常在for或while語句中與if配對使用舉例:鍵盤任意輸入一個整數n,求(n-1)!《MATLAB程序設計》1283.return命令使正在運行的函數正常結束并返回到命令行窗口或調用它的函數位置三者之間的區(qū)別continue:用于循環(huán)控制,當不想執(zhí)行循環(huán)體的全部語句,只想在做完某一步后直接返回,后面的語句將被跳過;break:用在for或while循環(huán)中,結束本層循環(huán),繼續(xù)執(zhí)行循環(huán)之后的下一條語句;return:終止當前命令的繼續(xù)執(zhí)行,控制權交給調用函數或命令行窗口(鍵盤);《MATLAB程序設計》129《MATLAB程序設計》130用來使程序暫停,然后根據用戶的設定來選擇何時繼續(xù)進行。4.pause命令使用格式pausepause(n)pause(state)暫停執(zhí)行M文件,n秒后恢復執(zhí)行state只有兩個選項,一個為on,一個是off《MATLAB程序設計》131

舉例《MATLAB程序設計》1325.echo命令語句回顯:在函數或腳本執(zhí)行期間顯示系統(tǒng)執(zhí)行的語句echoonechooff對所有腳本文件中的語句啟用回顯。在所有腳本文件中禁用語句回顯。echo

在上述兩個命令中進行切換《MATLAB程序設計》1336.warning命令用于在程序運行時給出必要的警告信息。warning(‘message’)顯示警告信息為“message”,其中message是文本信息顯示警告信息為“message”,其中message包含轉義字符,且每個轉義字符的值將被轉化為a1、a2…的值warning(‘message’,a1,a2…)舉例編制一個能計算以5為底的對數計算,要求當輸入參數不符合對數計算規(guī)則時,給出必要的警告信息?!禡ATLAB程序設計》134《MATLAB程序設計》1357.error命令用于顯示錯誤信息,同時返回鍵盤控制。error(‘message’)終止程序并顯示錯誤信息message終止程序并顯示錯誤信息message,其中message包含轉義字符error(‘message’,a1,a2…)與warning類似,可將上述程序中warning替換成error《MATLAB程序設計》136error與warning、disp的區(qū)別warning可以使用在程序的任何位置,但不影響程序的正常運行error可以使用在程序的任何位置,執(zhí)行后立即終止程序運行warning顯示的文本信息為橘黃色,且有聲音提示;error顯示的文本信息為紅色,有聲音提示;disp顯示的文本信息為黑色,無聲音提示;《MATLAB程序設計》1373.4程序的調試程序出現錯誤或者輸出結果與預期結果不一致,就需要對所編寫的程序進行調試。錯誤根據系統(tǒng)提示進行設置斷點進行語法錯誤程序邏輯錯誤調試方法《MATLAB程序設計》1381.根據系統(tǒng)提示信息進行調試系統(tǒng)會針對語法問題給出警告信息或錯誤信息大部分語法錯誤系統(tǒng)會檢測出來,并給出相應的錯誤信息《MATLAB程序設計》139斷點:是指用來臨時中斷M文件執(zhí)行的一個標志。2.設置斷點調試(1)斷點設置方法M編輯器中,按F12可將某一行設置為斷點利用dbstop命令設置M編輯器中,選擇“斷點”

“設置/清除”dbstopinmfiledbstopinmfileatLineNodbstopinmfileifexpressiondbstopifconditiondbstop(b)《MATLAB程序設計》140(2)清除斷點方法M編輯器中,按F12可將某一行清除斷點利用dbclear命令清除M編輯器中,選擇“斷點”

“設置/清除”dbclearalldbclearinmfileatLineNodbclearinmfiledbclearifcondition《MATLAB程序設計》

溫馨提示

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

評論

0/150

提交評論