版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第四章MATLAB程序設(shè)計4.1腳本文件和函數(shù)文件4.2程序控制結(jié)構(gòu)4.3文件操作4.4程序調(diào)試§4.1腳本文件和函數(shù)文件4.1.1M文件概述用MATLAB語言編寫的程序,稱為M文件。M文件可以根據(jù)調(diào)用方式的不同分為兩類:腳本文件(ScriptFile)和函數(shù)文件(FunctionFile)。4.1.2M文件的基本格式M函數(shù)文件的基本格式: 函數(shù)聲明行
H1行(用%開頭的注釋行)
在線幫助文本(用%開頭)
編寫和修改記錄(用%開頭)
函數(shù)體
4.1.3腳本文件
(1)腳本文件中的命令格式和前后位置,與在命令窗口中輸入的沒有任何區(qū)別。
(2)MATLAB在運行腳本文件時,只是簡單地按順序從文件中讀取一條條命令,送到MATLAB命令窗口中去執(zhí)行。
(3)與在命令窗口中直接運行命令一樣,腳本文件運行產(chǎn)生的變量都是駐留在MATLAB的工作空間(workspace)中,可以很方便地查看變量,除非用clear命令清除;腳本文件的命令也可以訪問工作空間的所有數(shù)據(jù),因此要注意避免變量的覆蓋而造成程序出錯。例4-1使用腳本文件畫花瓣圖%腳本程序%花瓣圖theta=-pi:0.01:pi;rho(1,:)=2*sin(5*theta).^2;rho(2,:)=cos(10*theta).^3;rho(3,:)=sin(theta).^2;rho(4,:)=5*cos(3.5*theta).^3;fork=1:4
polar(theta,rho(k,:))pauseend4.1.4函數(shù)文件函數(shù)的使用與其它高級語言相似,MATLAB提供的各種工具幾乎都是以函數(shù)的形式給出的。我們知道,MATLAB的各個工具箱都是集成了相當(dāng)多的專用函數(shù)而形成的。函數(shù)文件的特點:(1)第一行總是以“function”引導(dǎo)的函數(shù)聲明行;
函數(shù)聲明行的格式:
function[輸出變量列表]=函數(shù)名(輸入變量列表)
(2)函數(shù)文件在運行過程中產(chǎn)生的變量都存放在函數(shù)本身的工作空間;(3)當(dāng)文件執(zhí)行完最后一條命令或遇到“return”命令時,就結(jié)束函數(shù)文件的運行,同時函數(shù)工作空間的變量就被清除;(4)函數(shù)的工作空間隨具體的M函數(shù)文件調(diào)用而產(chǎn)生,隨調(diào)用結(jié)束而刪除,是獨立的、臨時的,在MATLAB運行過程中可以產(chǎn)生任意多個臨時的函數(shù)空間。例建立一個求平均值函數(shù)functiony=average(x)%求向量元素的平均值%average(x)x表示的是向量元素的值%如果沒有輸入向量,程序?qū)⒊鲥e[mn]=size(x);if(~((m==1)|(n==1))|(m==1&n==1))
error('Inputmustbevector')end%計算y=sum(x)/length(x);從上述的函數(shù)我們可以對函數(shù)的結(jié)構(gòu)有一個大致的了解,一個函數(shù)M文件一般由函數(shù)定義行、函數(shù)體、函數(shù)說明、注釋構(gòu)成。1、函數(shù)定義行函數(shù)M文件的第一行要求用關(guān)鍵字“function”把該文件定義為函數(shù),并指定函數(shù)的名字,該名字必須與存盤的文件名相同。同時這一句也定義了輸入與輸出參數(shù)。
2.函數(shù)體函數(shù)體是函數(shù)的主體部分,它完成了函數(shù)的主要功能,包括運算、賦值操作、作圖等MATLAB的程序代碼。
3.函數(shù)說明函數(shù)說明是對本函數(shù)完成功能的簡要說明,通常當(dāng)某個函數(shù)過于復(fù)雜時我們要給出函數(shù)說明以方便別的使用者使用。4.注釋注釋是夾雜在函數(shù)體中的語句,它以%開頭,出現(xiàn)%的行,%后的語句均為注釋性的,它的作用是方便別的程序員、用戶使用,類似函數(shù)說明?!?.2程序控制結(jié)構(gòu)for、while循環(huán)結(jié)構(gòu)if-else-end分支結(jié)構(gòu)switch-case結(jié)構(gòu)try-catch結(jié)構(gòu)4.2.1for、while循環(huán)結(jié)構(gòu)1、for語句
for循環(huán)允許一組命令以固定的和預(yù)定的重復(fù)次數(shù)重復(fù)執(zhí)行,
for語句的語法如下:
for變量=(初始值:增量:終止值)運算指令
end
說明:增量值默認(rèn)取值為1,也可以自己定義增量值,增量值可以小于零。當(dāng)增量值大于零時,程序?qū)⒃诖笥诮K止值時終止。例4-2使用for...end循環(huán)的array向量編程求出1+3+5...+100的值計算結(jié)果為:sum=2500程序說明:循環(huán)變量為n,n對應(yīng)為向量1:2:100,循環(huán)次數(shù)為向量的列數(shù),每次循環(huán)n取一個元素。2、while語句另外一個常用的循環(huán)語句就是while循環(huán),其語法為:while表達式循環(huán)體end其執(zhí)行方式為:若表達式為真,則執(zhí)行循環(huán)體的內(nèi)容,執(zhí)行完成后再判斷表達式是否為真,若不是則跳出循環(huán)體,向下繼續(xù)執(zhí)行。例4-3計算1+3+5...+100的值。sum=2500n=101程序分析:可以看出while...end循環(huán)的循環(huán)次數(shù)由表達式來決定,當(dāng)n=101就停止循環(huán)。4.2.2if、switch條件分支結(jié)構(gòu)1、if,else,elseif語句if用來檢查邏輯運算、邏輯函數(shù)、邏輯變量等邏輯表達式的真假,若為真則執(zhí)行接下來的指令或運算。其基本語法為:if邏輯表達式執(zhí)行語句end例如,如下的程序?qū)⒔o向量a賦值。fori=1:6
a(i)=i;ifi>3
a(i)=6-i;endendMATLAB還可以執(zhí)行多項條件,其語法為
if條件式1
語句段1
elseif
條件式2
語句段2 ... else
語句段n+1
end例
為下式編寫賦值程序
ifx>0y=x+1;elseifx==0y=x;elsey=x+1;End例4-4輸入一個字符,若為小寫字母,輸出其后繼,若大寫,輸出其對應(yīng)小寫字母,若數(shù)字,轉(zhuǎn)換成對應(yīng)的數(shù)值,其他字符原樣輸出2、switch語句
switch表達式
case表達式1
語句段1
case表達式2
語句段2 ... otherwise
語句段n
end說明:(1)將switch表達式依次與case后面的表達式進行比較,如果表達式1不滿足,則與下一個表達式2比較,如果都不滿足則執(zhí)行otherwise后面的語句段n;一旦開關(guān)表達式與某個表達式相等,則執(zhí)行其后面的語句段。(2)switch表達式只能是標(biāo)量或字符串。例4-5某商場對顧客所購買的商品實行打折銷售,標(biāo)準(zhǔn)如下(商品價格用price來表示)
例建立如下矩陣思考題寫程序,判斷一年是否為閏年符合下面兩條件之一:1、能被4整除,不能被100整除2、能被4整除,不能被400整除4.3文件操作4.3.1文件的打開與關(guān)閉
1.打開文件
fopen函數(shù)的調(diào)用格式為:
Fid=fopen(文件名,打開方式)2.關(guān)閉文件調(diào)用格式為:
Sta=fclose(Fid)
4.3.2二進制文件讀寫操作
1.讀二進制文件
fread
函數(shù)可以讀取二進制文件的數(shù)據(jù),并將數(shù)據(jù)存入矩陣。其調(diào)用格式為:
[A,COUNT]=fread(Fid,size,precision)2.寫二進制文件
fwrite
函數(shù)按照指定的數(shù)據(jù)精度將矩陣中的元素寫入到文件中。其調(diào)用格式為:
COUNT=fwrite(Fid,A,precision)
4.3.3文本文件讀寫操作
1.讀文本文件
fscanf
函數(shù)可以讀取文本文件的內(nèi)容,并按指定格式存入矩陣。其調(diào)用格式為:
[A,COUNT]=fscanf(Fid,format,size)2.寫文本文件
fprintf
函數(shù)可以將數(shù)據(jù)按指定格式寫入到文本文件中。其調(diào)用格式為:
COUNT=fprintf(Fid,format,A)
4.3.4數(shù)據(jù)文件定位
fseek函數(shù)用于定位文件位置指針,其調(diào)用格式為:
status=fseek(Fid,offset,origin)
ftell函數(shù)返回文件指針的當(dāng)前位置,其調(diào)用格式為:
position=ftell(Fid)
例
分析下列程序執(zhí)行后,four、position和three三個變量的值。a=1:5;Fid=fopen('fdat.bin','w');%以寫方式打開文件fdat.binfwrite(Fid,a,'int16');%將a的元素以雙字節(jié)整型寫入文件fdat.binstatus=fclose(Fid);Fid=fopen('fdat.bin','r');%以讀數(shù)據(jù)方式打開文件fdat.binstatus=fseek(Fid,6,'bof');%將文件指針從開始位置向尾部移動6個字節(jié)four=fread(Fid,1,'int16');%讀取第4個數(shù)據(jù),并移動指針到下一個數(shù)據(jù)position=ftell(Fid);%ftell的返回值為8status=fseek(Fid,-4,'cof');%將文件指針從當(dāng)前位置往前移動4個字節(jié)three=fread(Fid,1,'int16');%讀取第3個數(shù)據(jù)status=fclose(Fid);4.4程序調(diào)試MATLAB提供了M文件的調(diào)試功能,可以對M文件進行調(diào)試。MATLAB的調(diào)試功能幫助用戶確定MATLAB程序代碼中的錯誤,可以在函數(shù)運行期間的任何時刻用調(diào)試查看MATLAB工作區(qū)的變量值,查看函數(shù)調(diào)用的棧管理,以及逐行的運行M文件。調(diào)試為用戶提供了命令行交互式接口,可以通過命令窗口的菜單進行操作。
一般調(diào)試方法利用MATLAB的調(diào)試器Debugger,可以幫助發(fā)現(xiàn)和更正兩類錯誤----語法錯誤(Syntaxerrors)和運行錯誤(Runtimeerrors)。前者主要包括函數(shù)名拼寫和括號遺漏等錯誤。后者常是算法錯誤,而在語法上是正確的。這類錯誤會導(dǎo)致不正確的錯誤結(jié)果,而此時所有函數(shù)的工作區(qū)間已經(jīng)消失,所以調(diào)試的難度較高。一般情況下我們可以使用下面幾種方法來檢測運行錯誤。A在M文件中,加入keyboard語句,該語句可以設(shè)置程序的斷點。此時,我們可以檢測或者改變工作空間中的任何變量。程序會顯示“K>”的提示號。如果要繼續(xù)執(zhí)行程序,可以輸入return指令并按下回車鍵B在M文件中,刪除某些語句后面的分號,迫使從文件輸入一些中間計算結(jié)果,我們就可以據(jù)此發(fā)現(xiàn)可能的語法錯誤。C使用MATLAB的調(diào)試
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 校園應(yīng)急預(yù)案解讀
- 食品安全伴我行
- 認(rèn)識銷售課件教學(xué)課件
- 假如課件教學(xué)課件
- 高三化學(xué)一輪復(fù)習(xí) 第一章 離子反應(yīng) 離子方程式 課件
- 稻田餐廳課件教學(xué)課件
- 3.1.1鐵及鐵的氧化物 課件 高一上學(xué)期化學(xué)人教版(2019)必修第一冊
- 2.2化學(xué)平衡 課件高二上學(xué)期化學(xué)人教版(2019)選擇性必修1
- 成人夏季食品安全教育
- 企業(yè)宿舍管理培訓(xùn)
- 2022年烏魯木齊市法院書記員招聘考試題庫及答案解析
- 應(yīng)急預(yù)案救援物資檢查表
- 安全隱患排查記錄表
- 浙美版美術(shù)四上第5課《美術(shù)檔案袋》課件1
- 初中 初一 心理健康 我有我氣質(zhì) 課件
- 華中科技大學(xué)文科類與管理學(xué)類期刊分類辦法AD類
- DB12T 907-2019 牛糞制備臥床墊料技術(shù)規(guī)程
- 五年級數(shù)學(xué)下冊課件 - 6 圓的認(rèn)識練習(xí) - 蘇教版(共25張PPT)
- 小學(xué)勞動技術(shù) 滬科教版 四年級上冊 4車輛模型 課件
- 小學(xué)信息技術(shù) 遼寧師大版 五年級上冊 第4課 漂亮的藝術(shù)字《漂亮的藝術(shù)字》課件 課件
- 宮外孕手術(shù)配合
評論
0/150
提交評論