![MATLAB2016程序設(shè)計(jì)基礎(chǔ)_第1頁](http://file4.renrendoc.com/view11/M03/1C/21/wKhkGWWjeRCAXDGXAAB4HJj5xKg210.jpg)
![MATLAB2016程序設(shè)計(jì)基礎(chǔ)_第2頁](http://file4.renrendoc.com/view11/M03/1C/21/wKhkGWWjeRCAXDGXAAB4HJj5xKg2102.jpg)
![MATLAB2016程序設(shè)計(jì)基礎(chǔ)_第3頁](http://file4.renrendoc.com/view11/M03/1C/21/wKhkGWWjeRCAXDGXAAB4HJj5xKg2103.jpg)
![MATLAB2016程序設(shè)計(jì)基礎(chǔ)_第4頁](http://file4.renrendoc.com/view11/M03/1C/21/wKhkGWWjeRCAXDGXAAB4HJj5xKg2104.jpg)
![MATLAB2016程序設(shè)計(jì)基礎(chǔ)_第5頁](http://file4.renrendoc.com/view11/M03/1C/21/wKhkGWWjeRCAXDGXAAB4HJj5xKg2105.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第二章MATLAB根底1MATLAB開發(fā)環(huán)境MATLAB語言的變量運(yùn)算符語句MATLAB中的M文件等。2主要內(nèi)容MATLAB開發(fā)環(huán)境的主界面,主要包括:工具欄命令窗口〔CommandWindow〕工作空間窗口(Workspace)命令歷史窗口〔CommandHistory〕當(dāng)前路徑窗口〔CurrentDirectory〕等32.1MATLAB的程序界面MATLAB2023a程序界面上半局部是一個(gè)工具欄,包括主頁、繪圖和應(yīng)用程序三個(gè)選項(xiàng)卡(tab),其中主頁選項(xiàng)卡又分為文件、變量、代碼、SIMULINK、環(huán)境和資源幾個(gè)區(qū)(section),每個(gè)區(qū)中有假設(shè)干個(gè)命令。通過工具欄右上角的按鈕或最小化或恢復(fù)工具欄。下半局部包括當(dāng)前文件夾窗口〔CurrentFolder〕、命令行窗口〔CommandWindow〕和工作區(qū)窗口(Workspace),42.1MATLAB的程序界面2.1.1命令行窗口1、命令行窗口的功能命令行窗口是用戶與MATLAB編譯器進(jìn)行通信的工作環(huán)境,采用交互式設(shè)計(jì)方式?!?gt;>〞為提示符,表示MATLAB編譯器正等待用戶輸入命令52.1MATLAB的程序界面例如,要創(chuàng)立一個(gè)變量,并賦值3.14>>x=3.14>>sin(x)注意:ans是answer的縮寫,MATLAB中的默認(rèn)結(jié)果變量,當(dāng)沒有指定存儲數(shù)據(jù)的變量時(shí),就默認(rèn)使用ans來保存數(shù)據(jù)。>>x=4.56;注意:分號“;〞的作用是讓MATLAB系統(tǒng)只完成該命令要求的計(jì)算任務(wù),不顯示計(jì)算結(jié)果。62.1MATLAB的程序界面用↑或↓可以調(diào)出以前輸入的命令。如:>>sn(x)假設(shè)想刪除一個(gè)還沒執(zhí)行的命令,可以直接按ESC鍵72.1MATLAB的程序界面
8鍵功能鍵功能↑重調(diào)前一行End移動到行尾↓重調(diào)下一行ESC清除一行←左移一個(gè)字符Backspace刪除光標(biāo)左側(cè)一個(gè)字符→右移一個(gè)字符PageUp向前翻頁Ctrl+←左移一個(gè)字PageDown向后翻頁Ctrl+→右移一個(gè)字Ctrl+Home光標(biāo)移到命令窗口首Home移動到行首Ctrl+End光標(biāo)移到命令窗口尾2.1MATLAB的程序界面
2、數(shù)值的顯示格式在命令行窗口顯示數(shù)值結(jié)果時(shí),如果是整數(shù),顯示整數(shù);如果是實(shí)數(shù),默認(rèn)顯示小數(shù)點(diǎn)后四位有效數(shù)字。用format命令來指定改變數(shù)值的顯示格式,但不影響計(jì)算與存儲。formatstyle設(shè)置命令行窗口數(shù)據(jù)的輸出格式為styleformat
設(shè)置命令行窗口數(shù)據(jù)的輸出格式為默認(rèn)格式。92.1MATLAB的程序界面
102.1MATLAB的程序界面
2.1.2工作區(qū)窗口工作區(qū)窗口是MATLAB的變量管理中心,每次啟動MATLAB,都會自動建立一個(gè)工作區(qū),運(yùn)行MATLAB的程序或命令時(shí)產(chǎn)生的變量被參加到工作區(qū)中,除非用特殊的命令刪除某變量,否那么該變量在關(guān)閉MATLAB之前一直保存在工作區(qū),工作區(qū)在MATLAB運(yùn)行期間一直存在,關(guān)閉MATLAB后,工作區(qū)才會自動消除。112.1MATLAB的程序界面
MATLAB提供了一些命令隨時(shí)查看工作區(qū)中的變量名及變量的值.who或whos顯示當(dāng)前工作區(qū)中的所有變量。who只顯示變量名,whos給出變量的大小、數(shù)據(jù)類型等信息。class(變量名)顯示工作空間中指定變量的數(shù)據(jù)類型。size〔變量名〕顯示當(dāng)前工作區(qū)中指定變量的尺寸。length(變量名)顯示當(dāng)前工作區(qū)中最大維數(shù)中的長度。122.1MATLAB的程序界面
disp(變量名)顯示當(dāng)前工作區(qū)中指定變量。clear去除工作區(qū)中的所有變量clearvar1var2var3…去除指定的工作區(qū)變量例2-1首先定義三個(gè)變量x,y,z并分別賦值,然后查看工作區(qū)中的變量名、類型及值,最后去除變量z。>>x=123;y=3.14159;z=100;>>who>>whos>>disp(x)132.1MATLAB的程序界面
當(dāng)前文件夾窗口當(dāng)前文件夾(CurrentFolder)窗口顯示了MATLAB在對文件操作〔保存、翻開等〕時(shí)默認(rèn)的工作目錄,顯示的文件信息包括文件名稱、文件類型、修改日期、內(nèi)容描述等。該窗口相當(dāng)于是一個(gè)資源管理器。在當(dāng)前文件夾窗口中的某一文件上單擊鼠標(biāo)右鍵,會彈出上下文菜單,可通過此菜單實(shí)現(xiàn)對文件的翻開、運(yùn)行、重命名、復(fù)制、刪除等操作142.1MATLAB的程序界面2.1.4命令歷史記錄窗口
命令歷史記錄窗口(CommandHistory)記錄了所有執(zhí)行過的命令及執(zhí)行時(shí)間,用戶可以用鼠標(biāo)雙擊在該窗口中的某一歷史命令來重新執(zhí)行該命令,也可以用鼠標(biāo)右擊某一歷史命令,利用彈出的上下文菜單,進(jìn)行復(fù)制、刪除、執(zhí)行命令152.1MATLAB的程序界面在MATLAB命令窗口中輸入demo后按回車鍵,MATLAB按以下順序開始搜索:〔1〕在工作區(qū)中檢查demo是不是變量,如果是,返回該變量值;否那么轉(zhuǎn)入(2)?!?〕檢查demo是不是內(nèi)部函數(shù),如果是,執(zhí)行該內(nèi)部函數(shù);否那么轉(zhuǎn)入(3)?!?〕在當(dāng)前文件夾中檢查是否有名為demo.m的文件,如果有,執(zhí)行該文件;否那么轉(zhuǎn)入(4)?!?〕在搜索路徑中查找是否有名為demo.m的文件,如果有,執(zhí)行該文件;否那么給出出錯信息。162.2搜索路徑可以通過在命令窗口中輸入path命令查看當(dāng)前搜索路徑。用戶還可以使用path命令臨時(shí)添加新的搜索路徑。如:>>path〔’D:\mypath’,path〕;通過“主頁〞選項(xiàng)卡上“環(huán)境〞區(qū)中的“設(shè)置路徑〞命令,翻開“設(shè)置路徑〞對話框,進(jìn)行設(shè)置。注意:MATLAB命令中所涉及的文件假設(shè)既不存當(dāng)前文件夾下,也不在MATLAB的搜索路徑中,那么在文件名的前面必須加上路徑。172.2搜索路徑MATLAB有以下幾種方法獲得幫助:幫助命令幫助窗口HelpDesk在線幫助頁或直接鏈接到MathWorks公司(對于已聯(lián)網(wǎng)的用戶)。182.3幫助系統(tǒng)1、幫助命令help和lookfor〔1〕help命令用法是:help:顯示help主題一覽表。help函數(shù)名:顯示相應(yīng)函數(shù)的有關(guān)幫助信息。help幫助主題:獲取指定主題的幫助信息。例2-2顯示函數(shù)sin的幫助信息>>helpsin192.3幫助系統(tǒng)〔2〕lookfor雖然help可以隨時(shí)提供幫助,但必須知道準(zhǔn)確的函數(shù)名稱。當(dāng)不能確定函數(shù)名稱時(shí),help就無能為力了。lookfor命令,它可提供通過完整或局部的關(guān)鍵詞,搜索出一組與之相關(guān)的命令。一般情況下,該命令僅搜索各個(gè)文件幫助文本的第一行。>>lookforsi202.3幫助系統(tǒng)2、幫助窗口在MATLAB命令窗口中有二種方法進(jìn)入幫助窗口:〔1〕單擊菜單條上的問號按鈕?!?〕選取幫助菜單里的“Help〞項(xiàng)。212.3幫助系統(tǒng)2.4.1
數(shù)據(jù)與數(shù)據(jù)類型2.4.2
數(shù)據(jù)文件2.4.3運(yùn)算符2.4.4根本數(shù)學(xué)函數(shù)2.4.5
M文件程序控制語句222.4數(shù)據(jù)與數(shù)據(jù)類型2.4.1常量232.4數(shù)據(jù)與數(shù)據(jù)類型常量名常量值常量名常量值i,j虛數(shù)單位,定義為
realmindouble型數(shù)據(jù)的最小的正浮點(diǎn)數(shù),2.2251e-308pi圓周率realmaxdouble型數(shù)據(jù)的最大的浮點(diǎn)數(shù),1.7977e+308eps浮點(diǎn)數(shù)的相對誤差intmax32位二進(jìn)制數(shù)表示的最大正整數(shù),2147483647NaN表示不定值,即0/0intmin32位二進(jìn)制數(shù)表示的最小負(fù)整數(shù),-2147483648Inf無窮大,如1/0flintmaxdouble型數(shù)據(jù)的最大連續(xù)整數(shù)常量是指在計(jì)算過程中不變的量,如123,3.14159,1.3e-8,‘China’,true,都是一些常量。除此之外,MATLAB中有一些預(yù)定義的常量注1:上述表中的名稱不要做為變量名使用。根據(jù)MATLAB的規(guī)那么,當(dāng)在命令行窗口中的命令中出現(xiàn)一個(gè)標(biāo)識符時(shí),工作區(qū)中的變量名會優(yōu)先被搜索到。因此,如果表中的名稱被當(dāng)作變量名使用,那么名稱所定義的常量值會失效。如:>>eps=1 假設(shè)要恢復(fù)eps原來的值,用clear命令將變量eps去除即可。242.4數(shù)據(jù)與數(shù)據(jù)類型注2:上述表中有的名稱也可以用函數(shù)的形式使用,詳細(xì)使用方法請參閱MATLAB的Help。例如,假設(shè)要獲得single類型數(shù)據(jù)的最大浮點(diǎn)數(shù),可使用下面命令:>>realmax('single')252.4數(shù)據(jù)與數(shù)據(jù)類型2.4.2變量變量是用來存儲數(shù)據(jù)的。不需要對所使用的變量進(jìn)行事先聲明,也不需要指定變量的類型。每個(gè)變量都要有一個(gè)名字,給變量命名必須遵循如下規(guī)那么: (1)變量名區(qū)分大小寫字母,因此a與A是兩個(gè)不同的變量; (2)變量名以字母開頭,變量名中可以包含字母、數(shù)字和下劃線,但不能使用標(biāo)點(diǎn); (3)變量名最多包含63個(gè)字符,之后的字符將被忽略; (4)不能用MATLAB關(guān)鍵字如if,end等作變量名;262.4數(shù)據(jù)與數(shù)據(jù)類型注1:任何變量均被視為一個(gè)矩陣〔數(shù)組〕,單一的數(shù)被看作1×1矩陣。如:>>x=123;如果要給變量賦值為一個(gè)數(shù)組,那么輸入格式要求如下:(1)數(shù)組的元素必須在方括號[]中;(2)數(shù)組的同行元素之間用空格或逗號“,〞分隔;(3)數(shù)組的行與行之間用分號“;〞或回車符分隔;272.4數(shù)據(jù)與數(shù)據(jù)類型28例2-3創(chuàng)立變量并賦值為數(shù)組。在命令行窗口依次輸入下面命令:>>x=[123456789]>>y=[1,2,3;4,5,6;7,8,9]注2:在賦值過程中,如果變量已存在,MATLAB將使用新值代替舊值,并以新的變量類型代替舊的變量類型。2.4數(shù)據(jù)與數(shù)據(jù)類型2.4.3數(shù)據(jù)類型為了適應(yīng)多種運(yùn)算的需要,MATLAB提供了多種數(shù)據(jù)類型,這些數(shù)據(jù)類型最大的特點(diǎn)是每一種類型都以數(shù)組為根底,從數(shù)組中派生出來292.4數(shù)據(jù)與數(shù)據(jù)類型1、邏輯型〔BOOLEAN〕:表示“真〞、“假〞的數(shù)據(jù),“真〞、“假〞可以用true或flase表示,但輸出時(shí)用1和0來表示。例如,定義變量f并賦值為真: >>f=true2、字符和字符串〔Text〕:這種數(shù)據(jù)就是我們通常所說的文本,在MATLAB中每個(gè)字符占2個(gè)字節(jié),不管是字符還是字符串都用單引號括起來。如: >>c1='A' >>c2='China';
302.4數(shù)據(jù)與數(shù)據(jù)類型313、數(shù)值型〔Numeric〕:數(shù)值型數(shù)據(jù)就是我們通常所說的數(shù)字,根據(jù)數(shù)值是否有小數(shù)分為Floating-Point〔浮點(diǎn)型或?qū)嵭汀澈虸nterge〔整型〕。浮點(diǎn)型:根據(jù)數(shù)據(jù)的有效位數(shù)又分為Single-Precision〔單精度〕和Double-Precision〔雙精度〕兩種:單精度數(shù)據(jù)在內(nèi)存中占4個(gè)字節(jié),其正數(shù)的范圍約為1.17549×10-38~3.40282×1038,有效數(shù)字為6~7位;雙精度數(shù)據(jù)在內(nèi)存中占8個(gè)字節(jié),其正數(shù)的范圍約為2.22507×10-308~1.79769×10308,有效數(shù)字為15~16位。一個(gè)數(shù)值型數(shù)據(jù)在沒有特殊聲明的情況下,默認(rèn)為雙精度型。2.4數(shù)據(jù)與數(shù)據(jù)類型整數(shù)型:又分為4個(gè)有符號的和4個(gè)無符號的整數(shù)。int8:占1Byte,數(shù)據(jù)范圍-128~127int16:占2Byte,數(shù)據(jù)范圍-32768~32767int32:占4Byte,數(shù)據(jù)范圍-231~231-1int64:占8Byte,數(shù)據(jù)范圍-263~263-1uint8:占1Byte,數(shù)據(jù)范圍0~255uint16:占2Byte,數(shù)據(jù)范圍0~65535uint32:占4Byte,數(shù)據(jù)范圍0~232-1uint64:占8Byte,數(shù)據(jù)范圍0~264-1322.4數(shù)據(jù)與數(shù)據(jù)類型33復(fù)數(shù):一個(gè)復(fù)數(shù)實(shí)際上是由兩局部組成:實(shí)部和虛部。復(fù)數(shù)的數(shù)據(jù)類型是由實(shí)部和虛部的類型決定的 設(shè)c=a+bi(1)假設(shè)a和b有一個(gè)為single型,那么另一個(gè)可以是single或double型,c為single型;;(2)假設(shè)a和b中有一個(gè)整型,那么另一個(gè)要么是同類型的整型,要么是double,那么c是同類型的整型;生成一個(gè)復(fù)數(shù)有兩種方法: >>c=complex(1,2)或>>c=1+2i%只能用于情況〔1〕2.4數(shù)據(jù)與數(shù)據(jù)類型344、結(jié)構(gòu)體〔STRUCT〕:是指由不同數(shù)據(jù)類型的數(shù)據(jù)組成的一個(gè)數(shù)據(jù)集合,其中的每個(gè)元素稱為一個(gè)數(shù)據(jù)域,數(shù)據(jù)域的數(shù)據(jù)類型和大小可以是任意的。每個(gè)數(shù)據(jù)域通過數(shù)據(jù)域的名字來進(jìn)行訪問。如把一個(gè)學(xué)生的信息存儲到一個(gè)結(jié)構(gòu)體變量student中: >>student=struct('num',1000','name','LiMing','age',20)對結(jié)構(gòu)體數(shù)據(jù)的訪問可用圓點(diǎn)來完成,如讀取student變量中的姓名: >>2.4數(shù)據(jù)與數(shù)據(jù)類型5、單元數(shù)組〔CELL〕:是由不同數(shù)據(jù)類型的數(shù)據(jù)組成的一個(gè)數(shù)據(jù)集合,其中每個(gè)元素稱為一個(gè)單元,單元的數(shù)據(jù)類型和大小可以是任意的,每個(gè)單元通過下標(biāo)來進(jìn)行訪問。用{}創(chuàng)立單元數(shù)組 >>Mycell={1,3,6,'China',rand(3),{4,3.14,'text'}}對單元數(shù)組的訪問有兩種方式:〔1〕用圓括號(),其結(jié)果仍然是單元數(shù)組,如: >>Mycell(1:4)〔2〕用花括號{},其結(jié)果是單元中的數(shù)據(jù),如: >>Mycell{4}352.4數(shù)據(jù)與數(shù)據(jù)類型6、表〔Table〕:是由假設(shè)干行和列組成的二維表格,每一列有一個(gè)名字。表中同一列中的數(shù)據(jù)必須是同類型的,但不同列的數(shù)據(jù)類型可以不同。例2-4創(chuàng)立一個(gè)學(xué)生表,有5個(gè)學(xué)生,每個(gè)學(xué)生有學(xué)號、姓名、性別、年齡、入學(xué)成績等信息,具體操作如下:>>num=[1000;1001;1002;1003;1004];>>name={'李麗';'張浩';'劉路';'王斌';'楊陽'};>>sex={'女';'男';'女';'男';'男'};>>age=[18;17;19;18;19];>>score=[592;588;620;601;599];>>F=table(num,name,sex,age,score)362.4數(shù)據(jù)與數(shù)據(jù)類型對表中的數(shù)據(jù)訪問的方式有三種:(1)用圓括號,其下標(biāo)可以用數(shù)字,也可以用名稱,結(jié)果還是表,如: >>F(1:2,:)或: >>F(1:2,{'num','name','sex','age','score'})(2)用花括號,其下標(biāo)可以用數(shù)字,也可以用名稱,但結(jié)果是表中的數(shù)據(jù)。假設(shè)下標(biāo)有多個(gè),那么組成向量,這時(shí)要求數(shù)據(jù)類型要相同。如: >>F{1:5,'score'}(3)用圓點(diǎn),其結(jié)果是表中的數(shù)據(jù),如: >>F.score也可以只提取某幾行,如: >>F.name(1:2)372.4數(shù)據(jù)與數(shù)據(jù)類型6、函數(shù)句柄〔FunctionHandle〕:是在MATLAB中用來提供間接調(diào)用函數(shù)的數(shù)據(jù)類型。函數(shù)句柄可以轉(zhuǎn)遞給其他函數(shù),也可以存儲,利用函數(shù)句柄在函數(shù)的正常范圍之外調(diào)用該函數(shù)。創(chuàng)立函數(shù)句柄用符號@加函數(shù)名如定義一變量保存sin的函數(shù)句柄: >>h=@sin; %定義sin函數(shù)的句柄 >>h(pi/6); %利用函數(shù)句柄計(jì)算sin(π/6)382.4數(shù)據(jù)與數(shù)據(jù)類型392.4.4數(shù)據(jù)類型的轉(zhuǎn)換(1)數(shù)值數(shù)據(jù)之間的轉(zhuǎn)換B=single(A)將A的數(shù)據(jù)類型轉(zhuǎn)換為單精度實(shí)數(shù)。 >>x=single(123);那么變量x為單精度實(shí)數(shù)類型。B=double(A)將A的數(shù)據(jù)類型轉(zhuǎn)換為雙精度實(shí)數(shù)。B=int8(A)將A的數(shù)據(jù)類型轉(zhuǎn)換為8位有符號整數(shù)。 >>i=int8(123);那么變量i為8位整數(shù)類型。2.4數(shù)據(jù)與數(shù)據(jù)類型40(2)字符串轉(zhuǎn)換為數(shù)值d=base2dec('string',base)把base進(jìn)制表示的數(shù)值字符串string轉(zhuǎn)換為十進(jìn)制數(shù)。 >>n=base2dec('213',8);n的值為139d=bin2dec('string')把二進(jìn)制表示的數(shù)值字符串轉(zhuǎn)換為十進(jìn)制數(shù)d=hex2dec('hex_value')把十六進(jìn)制表示的數(shù)值字符串轉(zhuǎn)換為十進(jìn)制數(shù)d=str2double('string')把字符串轉(zhuǎn)換為雙精度實(shí)數(shù),字符串中可以包含數(shù)字、一個(gè)逗號〔千位分隔符〕、一個(gè)小數(shù)點(diǎn)、一個(gè)+或-號〔在最左邊〕、一個(gè)字母e表示10的冪、一個(gè)字母i表示虛數(shù)單位。 >>a=str2double('123.45e7') >>b=str2double('123+45i') >>c=str2double('3.14159') >>d=str2double('1,200.34')2.4數(shù)據(jù)與數(shù)據(jù)類型41(3)數(shù)值轉(zhuǎn)換為字符串S=char(X) 把非負(fù)整數(shù)X轉(zhuǎn)換為ASCII碼為X的字符。 >>c=char(65);c的值為’A’。str=dec2base(d,base)把非負(fù)整數(shù)d轉(zhuǎn)換為base進(jìn)制數(shù)的字符串,2≤base≤36。str=dec2bin(d) 把非負(fù)整數(shù)d轉(zhuǎn)換為二進(jìn)制數(shù)的字符串。str=dec2hex(d) 把非負(fù)整數(shù)d轉(zhuǎn)換為十六進(jìn)制數(shù)的字符串。str=int2str(N) 把整數(shù)N轉(zhuǎn)換為字符串。str=num2str(A) 把數(shù)值A(chǔ)轉(zhuǎn)換為字符串,假設(shè)A是浮點(diǎn)數(shù),轉(zhuǎn)換后的字符串依賴于A的數(shù)據(jù)范圍。2.4數(shù)據(jù)與數(shù)據(jù)類型(4)數(shù)值轉(zhuǎn)換為表T=array2table(A)把數(shù)值數(shù)組A轉(zhuǎn)換為表T。如: >>A=[135;638;846] >>T=array2table(A)(5)表轉(zhuǎn)換為數(shù)值A(chǔ)=table2array(T)把表轉(zhuǎn)換為數(shù)值數(shù)組。如: >>B=table2array(T)(6)結(jié)構(gòu)體轉(zhuǎn)換為表T=struct2table(S)把結(jié)構(gòu)體轉(zhuǎn)換為表。如: >>T=struct2table(student)422.4數(shù)據(jù)與數(shù)據(jù)類型2.4.2數(shù)據(jù)文件1.數(shù)據(jù)文件的類型MATLAB使用的數(shù)據(jù)文件大致有如下幾種:MATLAB標(biāo)準(zhǔn)數(shù)據(jù)文件:擴(kuò)展名為.mat。文本文件:擴(kuò)展名可以為任意,常見的是.txt。電子表格文件:擴(kuò)展名為.xls或.xlsx。圖像文件:擴(kuò)展名為.bmp,.jpg,.tif,.gif等。聲音文件:擴(kuò)展名為.wav等。視頻文件:擴(kuò)展名為.mov,.mpg,.mp4,.avi等。432.4數(shù)據(jù)與數(shù)據(jù)類型2.數(shù)據(jù)的導(dǎo)入與導(dǎo)出數(shù)據(jù)的導(dǎo)入是將以文件形式保存的數(shù)據(jù)從外存裝入內(nèi)存的工作空間中,以便進(jìn)行數(shù)據(jù)處理;數(shù)據(jù)導(dǎo)出是將工作空間中的數(shù)據(jù)從內(nèi)存保存到外存的文件中,以便長期保存。數(shù)據(jù)導(dǎo)入的最簡單方法是主頁選項(xiàng)卡上變量區(qū)中的導(dǎo)入數(shù)據(jù)命令。442.4數(shù)據(jù)與數(shù)據(jù)類型MATLAB提供了假設(shè)函數(shù)來完成數(shù)據(jù)的導(dǎo)入。(1)MATLAB標(biāo)準(zhǔn)數(shù)據(jù)文件和文本文件數(shù)據(jù)的導(dǎo)入與導(dǎo)出save(filename):所有變量以二進(jìn)制格式存入名為filename.mat文件,假設(shè)省略filename那么默認(rèn)文件名為matlab.mat。save(filename,variables):將當(dāng)前工作空間中variabler所列的變量存入filename.mat文件,variables有多個(gè)變量時(shí)用逗號分隔。save(filename,-ascii):將當(dāng)前工作空間中的變量以8位文本格式存入filename.mat文件。save(filename,-append):添加數(shù)據(jù)到已有filename.mat文件中,假設(shè)filename為二進(jìn)制文件那么用工作空間中新的值替換文件中已有的變量的值,假設(shè)為文本文件那么將數(shù)據(jù)添加到文件末尾。例2-5數(shù)據(jù)導(dǎo)出的練習(xí)452.4數(shù)據(jù)與數(shù)據(jù)類型將數(shù)據(jù)文件中的數(shù)據(jù)裝入內(nèi)存工作區(qū)中可以用load命令來實(shí)現(xiàn)。具體格式如下:load(filename):把數(shù)據(jù)文件filename.mat的數(shù)據(jù)裝入內(nèi)存的工作空間中。假設(shè)省略filenamem那么把當(dāng)前文件夾中的數(shù)據(jù)文件matlab.mat〔缺省的文件名〕的數(shù)據(jù)裝入內(nèi)存。load(filename,varibles):把數(shù)據(jù)文件filename.mat中varibles所列的變量裝入內(nèi)存中。load(filename,-ascii):把數(shù)據(jù)文件filename的內(nèi)容讀入內(nèi)存,這是一個(gè)ASCII碼文件,系統(tǒng)自動將文件名〔filename〕定義為變量名。例2-6數(shù)據(jù)導(dǎo)入的練習(xí)注意:上述兩個(gè)函數(shù)也可以使用命令形式調(diào)用:462.4數(shù)據(jù)與數(shù)據(jù)類型例2-7定義三個(gè)變量a=1,b=2,c=3,全部存入文件mydata中,再把b、c存入另一個(gè)文件中;清空工作空間后,檢查工作空間,再調(diào)入變量a,再檢查工作空間。>>a=1;b=2;c=3;>>savemydata>>savemydata1bc>>clear%清空工作空間>>whos%檢查工作空間,已沒有任何變量>>loadmydataa>>whos472.4數(shù)據(jù)與數(shù)據(jù)類型(2)電子表格文件數(shù)據(jù)的導(dǎo)入與導(dǎo)出[num,txt,raw]=xlsread(filename,sheet,range)其中,filename是電子表格的文件名,sheet是工作表的名稱或編號,range是工作表中單元格的范圍。從工作表中讀取的數(shù)值數(shù)據(jù)存入數(shù)值數(shù)組num中,讀取的文本數(shù)據(jù)存入單元數(shù)組txt中,文本和數(shù)值數(shù)據(jù)存入單元數(shù)組raw中。例2-8電子表格文件myExample.xlsx中的工作表1包含下面內(nèi)容:FirstSecondThird12345x7891)讀取工作表1中的全部數(shù)值數(shù)據(jù): >>A=xlsread('myExample.xlsx')2)只讀取工作表1中的局部數(shù)據(jù): >>subsetA=xlsread('myExample.xlsx',1,'B2:C3')3)讀取工作表1中的所有數(shù)據(jù): >>[ndata,text,alldata]=xlsread('myExample.xlsx')482.4數(shù)據(jù)與數(shù)據(jù)類型xlswrite(filename,A,sheet,range)
其中,A是一個(gè)數(shù)值或文本數(shù)組,其它同xlswrite函數(shù)。例2-9將例2-8中變量A中的數(shù)據(jù)保存到一個(gè)名為textdata.xlsx的文件中。 >>xlswrite('textdata.xlsx',A)492.4數(shù)據(jù)與數(shù)據(jù)類型(3)圖像文件數(shù)據(jù)的導(dǎo)入與導(dǎo)出A=imread(filename,fmt)其中,filename是圖像文件名,fmt是圖像文件格式〔文件的擴(kuò)展名〕,讀取的數(shù)據(jù)存入變量A中。例2-10讀取圖像文件ngc6543a.jpg,并顯示在屏幕上。 >>imdata=imread('ngc6543a.jpg'); >>imshow(imdata)注:imshow函數(shù)的作用是顯示圖像,詳細(xì)格式請讀者查閱help。imwrite(A,filename,fmt)其中,A是圖像數(shù)據(jù),其他參數(shù)與imread函數(shù)中的相同。502.4數(shù)據(jù)與數(shù)據(jù)類型(4)聲音文件〔.wav〕數(shù)據(jù)的導(dǎo)入與導(dǎo)出[y,Fs,nbits,opts]=wavread(filename)該函數(shù)可返回4個(gè)值,聲音采樣的數(shù)據(jù)存入變量y中,聲音采樣的頻率存入Fs中,單位是Hz,每個(gè)采樣數(shù)據(jù)所占用的字節(jié)數(shù)存入nbits中,聲音文件中的其他信息存入opts中,不同的聲音文件其信息是不同的。wavwrite(y,Fs,filename)512.4數(shù)據(jù)與數(shù)據(jù)類型52例2-11將handel.mat文件中的數(shù)據(jù)保存為聲音格式的文件,并播放。 >>loadhandel.mat >>hfile='handel.wav'; >>wavwrite(y,Fs,hfile) >>clearyFs >>[y,Fs,nbits,readinfo]=wavread(hfile); >>sound(y,Fs);注:函數(shù)sound的作用是播放聲音。2.4數(shù)據(jù)與數(shù)據(jù)類型53(5)視頻文件數(shù)據(jù)的導(dǎo)入與導(dǎo)出 MATLAB提供了2個(gè)函數(shù)VideoReader的VideoWriter來實(shí)現(xiàn)視頻文件的導(dǎo)入與導(dǎo)出,詳細(xì)使用方法本書不再陳述,請讀者查閱有關(guān)書籍。2.4數(shù)據(jù)與數(shù)據(jù)類型2.5.1算術(shù)運(yùn)算符MATLAB的算術(shù)運(yùn)算可以分為兩類:數(shù)組運(yùn)算和矩陣運(yùn)算。數(shù)組運(yùn)算是對應(yīng)元素之間的運(yùn)算,運(yùn)算符有:+(加)、-(減)、.*(乘)、./(右除)、.\(左除)、+(正)、-(負(fù))、.^(乘方)。矩陣運(yùn)算是按照矩陣的運(yùn)算規(guī)那么進(jìn)行,運(yùn)算符有:*(矩陣乘)、/(矩陣右除)、\(矩陣左除)、.’(轉(zhuǎn)置)、’(共軛轉(zhuǎn)置)、^(矩陣乘方)542.5運(yùn)算符關(guān)系運(yùn)算符MATLAB提供了6種關(guān)系運(yùn)算符 <小于<=小于等于>大于>=大于等于==等于~=不等于用于比較兩個(gè)同維矩陣的對應(yīng)位置元素,結(jié)果為同維的0-1矩陣,1表示比較結(jié)果為真,0表示比較結(jié)果為假。其中一個(gè)操作為標(biāo)量時(shí),表示該標(biāo)量與矩陣的每個(gè)元素進(jìn)行關(guān)系運(yùn)算,結(jié)果為與操作數(shù)矩陣同維的0-1矩陣。552.5運(yùn)算符2.5.3邏輯運(yùn)算符MATLAB提供了3種邏輯運(yùn)算符,即與&(AND),或|(OR),非~(NOT)兩個(gè)具有短路特點(diǎn)的邏輯運(yùn)算符分別是&&(與)和||(或),這兩個(gè)運(yùn)算符的運(yùn)算量,只能是標(biāo)量。參加運(yùn)算的運(yùn)算量非零表示真,0表示假,運(yùn)算結(jié)果為1或0。562.5運(yùn)算符2.5.4特殊操作符1.冒號“:〞冒號“:〞用于生成向量,具體格式:i:j如果i<j,那么生成行向量[i,i+1,i+2,i+3,…,j];如果i>j,那么x為空向量。i:k:j如果k>0且i<j或k<0且i>j,那么生成行向量[i,i+k,i+2k,i+3k,…,m],m與j的差的絕對值小于等于k的絕對值。如果k>0且i>j或k<0且i<j,那么x為空向量。注意:利用冒號生成向量時(shí),j不一定是向量的元素。572.5運(yùn)算符MATLAB中還提供了一個(gè)創(chuàng)立向量的函數(shù)linspace,調(diào)用格式如下:V=linspace(a,b,n)表示創(chuàng)立一個(gè)行向量V,V是一個(gè)包含n個(gè)元素的等差數(shù)列,它的第一個(gè)元素是a,最后一個(gè)元素是b。不指定n時(shí),n的值默認(rèn)是100,n<2時(shí)返回b。此函數(shù)和冒號創(chuàng)立等差數(shù)列不同的是,i:k:j創(chuàng)立的數(shù)組中,j可能取不到。582.5運(yùn)算符類似Matlab中還有創(chuàng)立等比數(shù)列的函數(shù)logspace,調(diào)用格式如下:V=logspace(a,b,n)表示創(chuàng)立一個(gè)行向量V,V是一個(gè)包含n個(gè)元素的等比數(shù)列,它的第一個(gè)元素是10a,最后一個(gè)元素是10b。不指定n時(shí),n的值默認(rèn)是50,n<2時(shí),返回10b。 >>a=linspace(1,10,10) >>b=linspace(1,9,5)592.5運(yùn)算符2.百分號“%〞百分號“%〞在編程時(shí)引導(dǎo)注釋行。該操作符后的內(nèi)容被作為注釋內(nèi)容,程序執(zhí)行時(shí)被忽略。如果要注釋多行可用%{和%},但要注意這兩個(gè)符號要單獨(dú)占一行。3.換行連接符“…〞如果一個(gè)命令語句非常長,一行容納不下,可以分幾行來寫。在行末加上換行連接符“…〞再回車即可在下一行接著寫該語句。注意:如果換行連接符前面是數(shù)字,直接使用換行連接符會出錯,有兩種解決方法:再加一個(gè)點(diǎn),即四個(gè)點(diǎn)“….〞;先空一格然后再輸入換行連接符。602.5運(yùn)算符
運(yùn)算符的優(yōu)先級當(dāng)一個(gè)代數(shù)式子中有多個(gè)運(yùn)算符時(shí),要根據(jù)運(yùn)算符的優(yōu)先級來決定運(yùn)算順序,優(yōu)先級相同的運(yùn)算符按自左向右的順序進(jìn)行計(jì)算,下面按優(yōu)先級由高到低的順序列出:(1) 圓括號()(2) 轉(zhuǎn)置(.'),乘方(.^),共軛轉(zhuǎn)置('),矩陣乘方(^)(3) 正(+),負(fù)(-),邏輯非(~)(4) 乘(.*),右除(./),左除(.\),矩陣乘(*),矩陣右除(/),矩陣左除(\)(5) 加(+),減(-)(6) 冒號(:)(7) 小于(<),小于等于(<=),大于(>),大于等于(>=),相等(==),不相等(~=)(8) 邏輯與(&)(9) 邏輯或(|)(10) 短路邏輯與(&&)(11) 短路邏輯或(||)612.5運(yùn)算符三角函數(shù)1.正弦函數(shù)Y=sin(X)計(jì)算參量X〔可以是向量、矩陣,元素可以是復(fù)數(shù)〕中每一個(gè)角度分量的正弦值Y,所有分量的角度單位為弧度。Y=sind(X)與sin函數(shù)的作用相同,但所有輸入?yún)?shù)分量的角度單位為度。注意:sin(pi)并不是零,浮點(diǎn)數(shù)的計(jì)算是有誤差的。2.余弦函數(shù)Y=cos(X)計(jì)算參數(shù)X〔可以是向量、矩陣,元素可以是復(fù)數(shù)〕中每一個(gè)角度分量的余弦值Y,所有分量的角度單位為弧度。Y=cosd(X)與cos函數(shù)的作用相同,但所有輸入?yún)?shù)分量的角度單位為度。622.6根本數(shù)學(xué)函數(shù)3.正切函數(shù)Y=tan(X)計(jì)算參數(shù)X〔可以是向量、矩陣,元素可以是復(fù)數(shù)〕中每一個(gè)角度分量的正切值Y,所有分量的角度單位為弧度。Y=tand(X)與tan函數(shù)相同,但所有輸入?yún)?shù)分量的角度單位為度。4.余切函數(shù)Y=cot(X)計(jì)算參數(shù)X〔可以是向量、矩陣,元素可以是復(fù)數(shù)〕中每一個(gè)角度分量的余切值Y,所有分量的角度單位為弧度。Y=cotd(X)與cot函數(shù)相同,但所有輸入?yún)?shù)分量的角度單位為度。5.正割函數(shù)Y=sec(X)計(jì)算參數(shù)X〔可以是向量、矩陣,元素可以是復(fù)數(shù)〕中每一個(gè)角度分量的正割值Y,所有分量的角度單位為弧度。Y=secd(X)與sec函數(shù)相同,但所有輸入?yún)?shù)分量的角度單位為度。632.6根本數(shù)學(xué)函數(shù)6.余割函數(shù)Y=csc(X)計(jì)算參數(shù)X〔可以是向量、矩陣,元素可以是復(fù)數(shù)〕中每一個(gè)角度分量的余割值Y,所有分量的角度單位為弧度。Y=cscd(X)與csc函數(shù)相同,但所有輸入?yún)?shù)分量的角度單位為度。7.反正弦函數(shù)Y=asin(X)計(jì)算參數(shù)X〔可以是向量、矩陣,元素可以是復(fù)數(shù)〕中每一個(gè)分量的反正弦函數(shù)值Y,角度單位為弧度。Y=asind(X)與asin函數(shù)相同,但輸出參數(shù)的角度單位為度。8.反余弦函數(shù)Y=acos(X)計(jì)算參數(shù)X〔可以是向量、矩陣,元素可以是復(fù)數(shù)〕中每一個(gè)分量的反余弦函數(shù)值Y,角度單位為弧度。Y=acosd(X)與acos函數(shù)相同,但輸出參數(shù)的角度單位為度。642.6根本數(shù)學(xué)函數(shù)659.反正切函數(shù)Y=atan(X)計(jì)算參數(shù)X〔可以是向量、矩陣,元素可以是復(fù)數(shù)〕中每一個(gè)分量的反正切函數(shù)值Y,角度單位為弧度。Y=atand(X)與atan函數(shù)相同,但輸出參數(shù)的角度單位為度。10.反余切函數(shù)Y=acot(X)計(jì)算參數(shù)X〔可以是向量、矩陣,元素可以是復(fù)數(shù)〕中每一個(gè)分量的反余切函數(shù)值Y,角度單位為弧度。Y=acotd(X)與acot函數(shù)相同,但輸出參數(shù)的角度單位為度。11.反正割函數(shù)Y=asec(X)計(jì)算參數(shù)X〔可以是向量、矩陣,元素可以是復(fù)數(shù)〕中每一個(gè)分量的反正割函數(shù)值Y,角度單位為弧度。Y=asecd(X)與asec函數(shù)相同,但輸出參數(shù)的角度單位為度。2.6根本數(shù)學(xué)函數(shù)6612.反余割函數(shù)Y=acsc(X)計(jì)算參數(shù)X〔可以是向量、矩陣,元素可以是復(fù)數(shù)〕中每一個(gè)分量的反余割函數(shù)值Y,角度單位為弧度。Y=acscd(X)與acsc函數(shù)相同,但輸出參數(shù)的角度單位為度。2.6.2取整和求余函數(shù)1.取整函數(shù)Y=
fix(X) 朝零方向取整。如: >>x=[5.647,3.14;-5.647,-3.14] >>fix(x)Y=ceil(X) 求大于等于X的最小整數(shù)。Y=floor(X) 求小于等于X的最大整數(shù)。Y=round(X) 四舍五入后取整。2.6根本數(shù)學(xué)函數(shù)2.求余數(shù)r=
mod(a,b)計(jì)算a除以b后的余數(shù),等價(jià)于
r=a-b.*floor(a./b)r=rem(a,b)計(jì)算a除以b后的余數(shù),等價(jià)于r=a-b.*fix(a./b)說明:mod與rem兩個(gè)函數(shù)都可以求兩個(gè)數(shù)的余數(shù),但計(jì)算方法有所不同:mod函數(shù)的計(jì)算結(jié)果不是0就是符號與b相同的余數(shù),而rem函數(shù)的計(jì)算結(jié)果不是0就是符號與a相同的余數(shù);兩個(gè)函數(shù)另外的不同是當(dāng)b為0時(shí),mod(a,0)函數(shù)的結(jié)果是a,而rem(a,0)函數(shù)的結(jié)果是NaN。672.6根本數(shù)學(xué)函數(shù)
682.6根本數(shù)學(xué)函數(shù)694.算術(shù)平方根函數(shù)B=sqrt(X)
計(jì)算X的算術(shù)平方根。5.有關(guān)復(fù)數(shù)的函數(shù)X=real(Z)
計(jì)算復(fù)數(shù)Z的實(shí)部。Y=imag(Z)
計(jì)算復(fù)數(shù)Z的虛部。P=angle(Z)
計(jì)算復(fù)數(shù)Z的輻角2.6根本數(shù)學(xué)函數(shù)M文件是由MATLAB命令或函數(shù)構(gòu)成的文本文件,以m為擴(kuò)展名,故稱為M文件。在M文件的語句中可以調(diào)用其他的的M文件,也可以遞歸地調(diào)用自身。M文件名不能有漢字,不能是純數(shù)字,不能與MATLAB中預(yù)定義的函數(shù)或命令名相同。M文件有兩種形式,即命令文件(Script)和函數(shù)文件(Function)。702.7M文件2.7.1命令文件命令文件是一個(gè)包含一系列MATLAB語句〔指令〕的文本文件,執(zhí)行命令文件時(shí),MATLAB自動按順序執(zhí)行命令文件中的語句,不需要輸入?yún)?shù),也沒有輸出參數(shù)。命令文件中定義的變量保存在工作區(qū)中,命令文件中的語句可以訪問MATLAB工作區(qū)中的所有變量,命令文件運(yùn)行后,所產(chǎn)生的所有變量都駐留在MATLAB工作區(qū)〔workspace〕中,只要用戶不使用去除指令〔clear〕,MATLAB程序不關(guān)閉,這些變量將一直保存在根本工作區(qū)中。712.7M文件1.命令文件的建立命令文件可以用任何文本編輯器生成,這里我們利用MATAB自帶的編輯器建立命令文件,步驟如下:1) 翻開編輯器〔MATLABEditor〕:選擇主頁選項(xiàng)卡上文件區(qū)中的新建腳本命令或主頁選項(xiàng)卡上文件區(qū)中的新建->腳本命令;2) 輸入程序:在“Editor〞窗口輸入MATLAB程序;3) 保存程序:選擇編輯器選項(xiàng)卡上的保存命令,出現(xiàn)一個(gè)對話框,在文件名框中鍵入一個(gè)文件名〔如example.m),單擊“保存〞按鈕.M文件的命名規(guī)那么和變量的命名規(guī)那么相同。722.7M文件2.命令文件的運(yùn)行方法1:單擊編輯器上的運(yùn)行按鈕方法2:在命令行窗口輸入文件名后回車〔注:這種方法必須保證命令文件在當(dāng)前文件夾下或在搜索路徑中,或文件名前加上路徑,否那么計(jì)算機(jī)無法執(zhí)行〕732.7M文件例2-12利用MATLAB的M文件編輯器,建立一個(gè)命令M文件。上機(jī)操作步驟:1)選擇主頁選項(xiàng)卡上文件區(qū)中的新建腳本命令,翻開M文件編輯器,2)在編輯窗口中輸入下面程序: %文件名為example x=4;y=6;z=2; items=x+y+z3)選擇編輯器選項(xiàng)卡上的“保存〞命令,在彈出的對話框中選擇文件的保存位置,輸入文件名example后單擊“保存〞。4)在命令行窗口中輸入文件名example并回車 >>example742.7M文件2.7.2函數(shù)M文件函數(shù)文件是以function語句為引導(dǎo)的M文件,可以接受輸入?yún)?shù)和返回輸出參數(shù).在缺省情況下,函數(shù)文件的內(nèi)部變量是臨時(shí)的局部變量,不會出現(xiàn)在工作區(qū)中。函數(shù)運(yùn)行結(jié)束后,這些局部變量被釋放,不再占用內(nèi)存空間。它們能夠像庫函數(shù)一樣被別的M文件方便地調(diào)用,從而可擴(kuò)展MATLAB的功能。如果對于一類特殊的問題,建立起許多函數(shù)文件,就能形成工具箱。752.7M文件函數(shù)定義的格式 function[輸出參數(shù)]=函數(shù)名(輸入?yún)?shù))%H1行%幫助文本
函數(shù)體語句%注釋函數(shù)定義行函數(shù)文件的第一行用關(guān)鍵字function開始。后面是輸出參數(shù),輸出參數(shù)是函數(shù)中的變量,用于指定函數(shù)的返回值。假設(shè)函數(shù)沒有返回值,那么輸出參數(shù)可以省略;假設(shè)輸出參數(shù)有多個(gè),要用逗號或空格分隔。等號后面是函數(shù)名,命名規(guī)那么與變量的命名規(guī)那么相同。函數(shù)名后面圓括號內(nèi)是輸入?yún)?shù),輸入?yún)?shù)是用于接收調(diào)用函數(shù)時(shí)傳遞過來的數(shù)據(jù)。假設(shè)沒有傳遞數(shù)據(jù),那么輸入?yún)?shù)可以省略,假設(shè)有多個(gè)輸入?yún)?shù)時(shí)要用逗號分隔。762.7M文件H1行H1行是幫助文本的第一行,它緊跟在定義行之后,以“%〞開始,該行通常包含函數(shù)的名稱以及這個(gè)函數(shù)功能的簡要描述,在當(dāng)前文件夾瀏覽或在MATLAB的命令行窗口中使用lookfor命令查找相關(guān)的函數(shù)時(shí),將顯示H1行。幫助文本幫助文本是H1行與函數(shù)體之間的幫助內(nèi)容,也是以“%〞開始,用于詳細(xì)介紹函數(shù)的功能和用法以及其他說明。在命令行窗口用help函數(shù)名命令時(shí),將顯示幫助文本。函數(shù)體函數(shù)體是函數(shù)的主體局部,函數(shù)體中包括該函數(shù)的全部程序代碼,在函數(shù)體中包含了對輸入?yún)?shù)進(jìn)行運(yùn)算并將運(yùn)算結(jié)果賦值給輸出參數(shù)的MATLAB語句??梢园鞒炭刂啤⑤斎胼敵?、計(jì)算、賦值、注釋、圖形功能以及對其他函數(shù)和命令文件的調(diào)用。772.7M文件
注釋除了函數(shù)文件開始局部的幫助文本外,可以在函數(shù)文件的任何位置添加注釋語句,注釋語句可以在一行的開始,也可以跟在一條可執(zhí)行語句的后面(同一行中),不管在什么地方,注釋語句必須以“%〞開始,MATLAB在執(zhí)行M文件時(shí)將每一行中“%〞后面的內(nèi)容全部作為注釋,不予以執(zhí)行。782.7M文件792.7M文件803.函數(shù)的調(diào)用函數(shù)語法:函數(shù)M文件的運(yùn)行和命令M文件不同,調(diào)用函數(shù)時(shí)需要給函數(shù)傳遞數(shù)據(jù)和接收函數(shù)的運(yùn)算結(jié)果,調(diào)用函數(shù)的格式如下: [變量列表]=函數(shù)名(實(shí)際參數(shù))變量列表是用于接收函數(shù)返回值的變量,有多個(gè)時(shí)要用逗號或空格分隔。實(shí)際參數(shù)是傳遞給函數(shù)的數(shù)據(jù),可以是常量、變量或表達(dá)式,如果實(shí)際參數(shù)中包含變量,那么需事先給變量賦值。調(diào)用時(shí),計(jì)算時(shí)機(jī)把實(shí)際參數(shù)的值依次傳遞給函數(shù)定義行中的輸入?yún)?shù)。命令語法:如果你不需要從函數(shù)獲得任何數(shù)據(jù),并且函數(shù)的輸入數(shù)據(jù)是字符串,那么函數(shù)的調(diào)用格式可以采用下面格式: 函數(shù)名字符串1字符串2…字符串之間用空格分隔,而不是逗號,界定字符串的單引號可以省略,除非字符串本身包含空格。2.7M文件81>>disp('China') %函數(shù)語法格式>>dispChina %命令語法格式>>dispThisisaText%字符串包含空格錯誤使用disp輸入?yún)?shù)太多。>>disp‘ThisisaText’注:如果你要給函數(shù)傳遞一個(gè)變量的值,那么只能采用函數(shù)語法調(diào)用函數(shù)。如: >>A=123; >>disp(A)%輸出變量A的值 >>dispA%輸出字符A2.7M文件例2-13編寫一函數(shù)文件計(jì)算兩個(gè)數(shù)的和 functions=fun1(x,y) s=x+y; end注:輸出變量只有一個(gè)時(shí),輸出變量可以不用[]括起來。在MATLAB的命令行窗口或別的M文件里,就可用以下命令調(diào)用: s=fun1(5,3)說明:調(diào)用函數(shù)fun1時(shí),要保證文件fun1.m所在的文件夾為當(dāng)前文件夾或在MATLAB的搜索路徑中。822.7M文件例2-14編寫一文件,輸入圓的半徑,輸出圓的周長和圓的面積 function[L,S]=fun2(r) L=2*pi*r; S=pi*r*r;在命令行窗口中可用以下命令調(diào)用: >>[C,area]=fun2(5)832.7M文件844.函數(shù)的輸入輸出參數(shù)定義函數(shù)時(shí)。以function開始的首行定義了輸入?yún)?shù)和輸出參數(shù)。主要用于調(diào)用函數(shù)時(shí)給函數(shù)傳遞數(shù)據(jù)或從函數(shù)獲得計(jì)算結(jié)果。在函數(shù)體中可以通過nargin和nargout獲得調(diào)用該函數(shù)時(shí)實(shí)際參數(shù)和輸出參數(shù)的個(gè)數(shù),進(jìn)而判斷輸入、輸出參數(shù)的數(shù)量是否符合函數(shù)定義的要求,從而防止因輸入輸出參數(shù)不符而導(dǎo)致程序出錯。2.7M文件例2-15編寫一求和函數(shù),要求輸入二個(gè)參數(shù),但調(diào)用時(shí)假設(shè)只輸入一個(gè)參數(shù),那么輸出該參數(shù)的2倍,假設(shè)沒有參數(shù)那么輸出0。程序如下:functionc=addme(a,b) ifnargin==2 c=a+b; elseifnargin==1 c=a+a; else c=0;end在命令行窗口調(diào)用該函數(shù)時(shí)有下面三種調(diào)用格式:>>addme(2,3) %第一種,有兩個(gè)輸入?yún)?shù)>>addme(2) %第二種,有一個(gè)輸入?yún)?shù)>>addme %第三種,沒有輸入?yún)?shù)852.7M文件MATLAB還可以利用varargin和varargout實(shí)現(xiàn)可變參數(shù)的函數(shù)設(shè)計(jì),這兩個(gè)變量是單元數(shù)組,分別保存著輸入和輸出參數(shù)。例2-16編寫一求和函數(shù),可輸入任意多個(gè)數(shù),輸出其和。
functions=addmu(varargin)%varargin是一個(gè)1*N的單元數(shù)組
s=0;
fori=1:nargin
s=s+varargin{i};
end在命令行窗口輸入:>>addmu(2,3)>>addmu(1,2,3,4,5,7,8)862.7M文件5.函數(shù)的類型在MATLAB中,根據(jù)函數(shù)的建立方式和作用,可以把函數(shù)分為五種:主函數(shù)、局部函數(shù)、嵌套函數(shù)、私有函數(shù)和匿名函數(shù)。(1)主函數(shù)(themainfunction):在程序文件中,可以定義假設(shè)干個(gè)函數(shù),其中文件中的第一個(gè)函數(shù)稱為主函數(shù),它可以在命令行窗口中調(diào)用,也可以在其他程序文件中調(diào)用。(2)局部函數(shù)(localfunctions):與主函數(shù)在同一個(gè)文件,且定義在主函數(shù)后面的函數(shù)稱為局部函數(shù),局部函數(shù)只能被被定義在同一個(gè)文件中的函數(shù)所調(diào)用。872.7M文件例2-17定義一個(gè)函數(shù)計(jì)算x^2+2x functionb=myfunction(x) %主函數(shù) b=squareMe(x)+doubleMe(x); end functiony=squareMe(x) %局部函數(shù) y=x.^2; end functiony=doubleMe(x) %局部函數(shù)
y=x.*2; end在命令行窗口調(diào)用主函數(shù): >>myfunction(3)882.7M文件(3)嵌套函數(shù)(NestedFunctions):定義在一個(gè)函數(shù)內(nèi)部的函數(shù)稱為嵌套函數(shù),包含嵌套函數(shù)的函數(shù)稱為父函數(shù),任何一個(gè)函數(shù)都可以作為父函數(shù)。例2-18父函數(shù)與嵌套函數(shù)的實(shí)例 functiony=main1 disp('Thisistheparentfunction') x=5; nestfun1
functionnestfun1
disp('Thisisthenestedfunction')
x=x+1;
end y=x; end在命令行窗口中調(diào)用函數(shù)main1: >>main1892.7M文件嵌套函數(shù)的調(diào)用規(guī)那么可以通過下面結(jié)構(gòu)說明: functionA(x,y) %主函數(shù) B(x,y) %函數(shù)A可以調(diào)用B或D,但不能調(diào)用C或E D(y) functionB(x,y) %嵌套在函數(shù)A中 C(x) %函數(shù)B可以調(diào)用C和D D(y) functionC(x)%嵌套在函數(shù)B中 D(x) %函數(shù)C可以調(diào)用B或D,但不能調(diào)用E end end functionD(x) %嵌套在函數(shù)A中 E(x) %函數(shù)D可以調(diào)用B或E functionE(x)%嵌套在函數(shù)D中 disp(x) end end end902.7M文件(4)私有函數(shù)(privatefunctions):保存在private文件夾下的函數(shù),主要用于限制函數(shù)的使用范圍。建立方法如下:在MATLAB的搜索路徑中的某個(gè)文件夾下建立一個(gè)新的文件夾,名為private,但不要把該文件夾添加到搜索路徑中。在private文件夾下建立一個(gè)函數(shù)文件,不妨取名為subfun.m。 functionsubfun %Anexampleofaprivatefunction. disp('這是一個(gè)私有函數(shù).') end在private文件夾的父文件夾中建立函數(shù)文件,調(diào)用subfun函數(shù)functionfun1subfunend(4) 改變當(dāng)前文件夾為任意文件夾,調(diào)用fun1函數(shù) >>fun1912.7M文件(5)匿名函數(shù)(anonymousfunction):匿名函數(shù)不是一個(gè)M文件,而是一個(gè)句柄變量,匿名函數(shù)也有輸入?yún)?shù)和輸出參數(shù),但只包含一個(gè)執(zhí)行語句。如: >>sqr=@(x)x.^2+2;%定義匿名函數(shù) >>a=sqr(3)922.7M文件2.7.3局部變量和全局變量在函數(shù)文件中定義的變量,保存在函數(shù)自己的工作空間中,每個(gè)函數(shù)都有自己的工作空間,其它函數(shù)是不能訪問的,這些變量稱為局部變量。如果要實(shí)現(xiàn)局部變量在幾個(gè)函數(shù)和工作區(qū)中共享,可以使用以下方法:1.通過數(shù)據(jù)傳遞這是最有效、最平安的一種方法,在一個(gè)函數(shù)中通過實(shí)際參數(shù),將該函數(shù)中局部變量的值傳遞給另一個(gè)函數(shù)。如例2-17,在myfunction函數(shù)中將局部變量x的值傳遞給squareMe函數(shù)的局部變量x和doubleMe函數(shù)的局部變量x。932.7M文件2.定義嵌套函數(shù)對于嵌套函數(shù)及其父函數(shù)中定義的局部變量,在嵌套函數(shù)中可以使用父函數(shù)中定義的變量,反之,在父函數(shù)中也可以使用嵌套函數(shù)內(nèi)定義的變量。這樣可以實(shí)現(xiàn)在父函數(shù)與嵌套函數(shù)之間實(shí)現(xiàn)數(shù)據(jù)共享。如例2-18,在main1中定義的局部變量x,在nestfun1函數(shù)中可以直接使用。3.定義持續(xù)性局部變量(PersistentVariables)如果在函數(shù)內(nèi)將一個(gè)變量聲明為持續(xù)性的(persistent),那么當(dāng)函數(shù)調(diào)用結(jié)束時(shí),其值保存在內(nèi)存中,下次調(diào)用該函數(shù)時(shí)仍然有效。持續(xù)性局部變量與C語言中的靜態(tài)型局部變量類似。942.7M文件
95(2)然后建立下面命令文件%文件名為ex2_14clearallsum=0;n=input('輸入一個(gè)正整數(shù)');fori=1:nsum=sum+factorial(i);enddisp(sum)(3)在命令行窗口輸入下面命令:
>>ex2_142.7M文件4.定義全局變量(GlobalVariables)用關(guān)鍵字global聲明的變量稱為全局變量,全局變量可以在不同的函數(shù)或工作區(qū)中所共享。如果需要在幾個(gè)函數(shù)中和工作區(qū)都能訪問同一個(gè)全局變量,必須在每個(gè)函數(shù)和MATLAB工作區(qū)內(nèi)都聲明該變量是全局的。實(shí)際編程中,為了防止出現(xiàn)不可預(yù)見的情況,應(yīng)盡量防止使用全局變量。962.7M文件例如:首先建立兩個(gè)函數(shù)文件如下:functionsetGlobalx(val)globalxx=val;endfunctionr=getGlobalxglobalxr=x;end97在命令行窗口中輸入下面命令:>>setGlobalx(1138)>>r=getGlobalxr=1138從結(jié)果可以看出,全局變量x可以在函數(shù)setGlobalx中使用,也可以在函數(shù)getGlobalx中使用。在命令行窗口中輸出x的值會出錯:>>x未定義函數(shù)或變量'x'。>>globalx>>x2.7M文件2.7.4程序的調(diào)試1.設(shè)置斷點(diǎn),這是單步調(diào)試重要的第一步,通過設(shè)置斷點(diǎn),使程序在斷點(diǎn)處停止執(zhí)行,從而可以檢查各個(gè)局部變量的值。2.運(yùn)行程序到斷點(diǎn),單擊編譯器選項(xiàng)卡中的“運(yùn)行〞命令,使程序執(zhí)行到斷點(diǎn)處停止,有一個(gè)綠色箭頭指向斷點(diǎn)處,表示下一步將執(zhí)行的是哪條語句。這時(shí)命令行窗口中的提示符變?yōu)椤癒>>〞,表示目前是程序調(diào)試狀態(tài),這時(shí),用戶可以查看變量的值、給變量賦值等各種操作3.執(zhí)行綠色箭頭所指向的語句,單擊編輯器選項(xiàng)卡上的“步進(jìn)〞命令,這時(shí)計(jì)算機(jī)將執(zhí)行箭頭所指向的語句行,并將箭頭下移一行。重復(fù)執(zhí)行該操作,在執(zhí)行程序的過程中,觀察變量的變化,從而找出錯誤所在。4.退出調(diào)試模式,單擊編輯器選項(xiàng)卡上的“退出調(diào)試〞命令。982.7M文件MATLAB中除了按正常順序執(zhí)行程序中的命令和函數(shù)以外,還提供了8種控制程序流程的語句,這些語句包括for、while、if、switch、try、continue、break、return等。992.8程序控制語句2.8.1選擇控制語句:1.條件語句包含if-end語句、if-else-end語句、if-elseif-end語句等(1)if-end語句if表達(dá)式語句end執(zhí)行過程:首先計(jì)算表達(dá)式的值,假設(shè)表達(dá)式的值為真〔非零值〕,那么執(zhí)行語句;假設(shè)表達(dá)式的值為假〔零值〕那么不執(zhí)行語句。1002.8程序控制語句
(2)if-else-end語句if表達(dá)式語句1else語句2end執(zhí)行過程:首先計(jì)算表達(dá)式的值,假設(shè)表達(dá)式的值為真〔非零值〕,那么執(zhí)行語句1;假設(shè)表達(dá)式的值為假〔零值〕那么執(zhí)行語句2。1012.8程序控制語句〔3〕if-elseif-end語句if表達(dá)式1語句1elseif表達(dá)式2語句2……end執(zhí)行過程:首先計(jì)算表達(dá)式1的值,假設(shè)表達(dá)式1的值為真(非零值),那么執(zhí)行語句1;假設(shè)表達(dá)式1的值為假,那么計(jì)算表達(dá)式2的值,假設(shè)表達(dá)式2的值為真(非零值),那么執(zhí)行語句2。假設(shè)表達(dá)式2的值為假那么不執(zhí)行語句2。注意:表達(dá)式通常使用關(guān)系操作符、邏輯操作符、邏輯函數(shù)等。1022.8程序控制語句
103
2.8程序控制語句2、分支語句switch表達(dá)式〔標(biāo)量或字符串〕case常量表達(dá)式語句體1case{常量表達(dá)式1,常量表達(dá)式2,…} 語句體2 …otherwise語句體n;end1042.8程序控制語句
例2-21設(shè)計(jì)一程序,輸入一個(gè)數(shù),然后判斷它能否被5整除。%文件名為ex2_21clearn=input('inputanumbern=');switchmod(n,5)%mod表示取余數(shù) case0fprintf('%d是5的倍數(shù)\n',n); otherwisefprintf('%d不是5的倍數(shù)\n',n);end1052.8程序控制語句注意:1.input是數(shù)據(jù)輸入函數(shù),該函數(shù)的調(diào)用格式為:A=input(‘提示信息’)其中提示信息為一個(gè)字符串,用于提示用戶輸入什么樣的數(shù)據(jù)。A=input(‘提示信息’,’s’)如果在input函數(shù)調(diào)用時(shí)采用's'選項(xiàng),那么允許用戶輸入一個(gè)字符串。例如,想輸入一個(gè)人的姓名,可采用命令: xm=input('What''syo
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年八年級科學(xué)下冊第三章空氣與生命第八節(jié)空氣污染與保護(hù)作業(yè)設(shè)計(jì)新版浙教版
- 服裝設(shè)計(jì)師上半年工作總結(jié)
- 后勤部員工年度個(gè)人工作總結(jié)報(bào)告
- 科技骨干教師培訓(xùn)教學(xué)總結(jié)
- 員工接送車輛租用協(xié)議書范本
- 云南EPC工程合作框架協(xié)議書范本
- 物流倉儲服務(wù)合同范本
- 湘教版地理七年級上冊3.2《世界的人種》聽課評課記錄
- 湘教版數(shù)學(xué)八年級下冊1.1《直角三角形的性質(zhì)與判定》聽評課記錄2
- 浙教版數(shù)學(xué)七年級下冊《閱讀材料 楊輝三角與兩數(shù)和的乘方》聽評課記錄1
- GB/T 26189.2-2024工作場所照明第2部分:室外作業(yè)場所的安全保障照明要求
- 七上 U2 過關(guān)單 (答案版)
- 五年級上冊小數(shù)遞等式計(jì)算200道及答案
- 原發(fā)性膽汁性肝硬化(PBC)課件
- 貸款新人電銷話術(shù)表
- 音箱可靠性測試規(guī)范
- 社區(qū)經(jīng)濟(jì)基本內(nèi)涵及我國社區(qū)經(jīng)濟(jì)發(fā)展現(xiàn)狀
- 數(shù)據(jù)結(jié)構(gòu)ppt課件完整版
- 新北師大版四年級下冊小學(xué)數(shù)學(xué)全冊導(dǎo)學(xué)案(學(xué)前預(yù)習(xí)單)
- 杭州市主城區(qū)聲環(huán)境功能區(qū)劃分圖
- 新概念英語第二冊1-Lesson29(共127張PPT)課件
評論
0/150
提交評論