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

下載本文檔

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

文檔簡介

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

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

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

《MATLAB程序設(shè)計(jì)》10

接近于Windows的標(biāo)準(zhǔn)界面,人機(jī)交互性更強(qiáng),操作更簡單。2.簡單易用《MATLAB程序設(shè)計(jì)》11具備面向?qū)ο缶幊痰奶攸c(diǎn),基于C/C++的語法特征,但比其更簡單,程序可移植性好。3.強(qiáng)大的處理能力

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

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

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

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

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

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

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

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

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

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

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

第三:變量名區(qū)分大小寫;如myvar與myVar不是同一個(gè)變量注意:MATLAB提供的標(biāo)準(zhǔn)函數(shù)以及命令都必須使用小寫字母?!禡ATLAB程序設(shè)計(jì)》512.2.1變量與賦值賦值賦值語句有兩種形式:(1)變量=表達(dá)式(2)表達(dá)式

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

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

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

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

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

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

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

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

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

產(chǎn)生5階隨機(jī)方陣A,其元素為[10,90]區(qū)間的隨機(jī)整數(shù),然后判斷A的元素是否能被3整除。(1)生成5階隨機(jī)方陣A。A=fix((90-10+1)*rand(5)+10)(2)判斷A的元素是否可以被3整除。

P=rem(A,3)==0其中,rem(A,3)是矩陣A的每個(gè)元素除以3的余數(shù)矩陣。此時(shí),0被擴(kuò)展為與A同維數(shù)的零矩陣,P是進(jìn)行等于(==)比較的結(jié)果矩陣?!禡ATLAB程序設(shè)計(jì)》82

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

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

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

(2)構(gòu)造對角矩陣?yán)纾篤=[1,2,-3];C1=diag(V)C2=diag(V,-1)2.5.1對角陣和三角陣《MATLAB程序設(shè)計(jì)》87

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

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

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

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

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

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

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

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

把一個(gè)方陣看作一個(gè)行列式,并對其按行列式的規(guī)則求值,這個(gè)值就稱為矩陣所對應(yīng)的行列式的值。《MATLAB程序設(shè)計(jì)》932.5.5矩陣的秩與跡2.矩陣的跡

1.矩陣的秩

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

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

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

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

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

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

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

第一:在主頁中點(diǎn)擊“新建”,然后選擇“腳本”,即可進(jìn)入

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

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

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

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

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

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

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

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

case值1

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

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

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

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

“設(shè)置/清除”dbclearalldbclearinmfileatLineNodbclearinmfiledbclearifcondition《MATLAB程序設(shè)計(jì)》

溫馨提示

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

最新文檔

評論

0/150

提交評論