M文件概述
用MATLAB語言編寫的程序,稱為M文件。M文件可以根據(jù)調(diào)用方式的不同分為兩類:命令文件(Script File)和函數(shù)文件(Function File)株旷。
eg:
Program1
? ? clear;%清除工作空間中的變量
? ? f=input('Input Fahrenheit temperature:')
? ? c=5*(f-32)/9
在MATLAB的命令窗口中輸入f2c塔次,將會執(zhí)行該命令文件
Program2
function c=f2c(f)
c=5*(f-32)/9
在MATLAB的命令窗口調(diào)用該函數(shù)文件。
clear;
y=input('Input Fahrenheit temperature:');
x=f2c(y)
程序控制結(jié)構(gòu)
順序結(jié)構(gòu)
數(shù)據(jù)輸入
input(提示信息有缆,選項)
選項僅有's',采用時象踊,將輸入的文本返回為字符串温亲,而不將輸入作為表達式進行評估。
數(shù)據(jù)輸出
disp(輸出項)
其中輸出項既可以為字符串通危,也可以為矩陣铸豁。
eg:
a=input('a=?');
b=input('b=?');
c=input('c=?');
d=b*b-4*a*c;
x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];
disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);
此程序的改進,運用if語句進行deta的判別
程序暫停
pause(延遲秒數(shù))
如果省略延遲時間菊碟,直接使用pause节芥,則將暫停程序,直到用戶按任一鍵后程序繼續(xù)執(zhí)行逆害。
此函數(shù)在用m文件寫爬蟲時可以用到头镊,python爬蟲的休眠是通過什么函數(shù)完成?
選擇結(jié)構(gòu)
if語句
if條件1
語句組1
elseif條件2
語句組2
……
elseif條件m
語句組m
else
語句組n
end
特點:if后的條件不用括號括起
條件后也沒有:號
結(jié)尾需要用end語句結(jié)束
switch語句
switch表達式
case表達式1
語句組1
case表達式2
語句組2
……
case表達式m
語句組m
otherwise
語句組n
end
特點:switch后的條件不用括號括起
條件后也沒有:號
結(jié)尾需要用end語句結(jié)尾
case后不需要跟break語句魄幕,直接調(diào)出switch語句
eg:
clear;
price=input('please enter the priece');
switch fix(price/100)
case{0,1}
rate=0;
case{2,3,4}
rate=0.03;
case{5,6,7,8,9}
rate=0.05;
case{10:24}
rate=0.08;
case{25:50}
rate=0.1;
otherwise
rate=0.14;
end
finalprice=price*(1-rate);
disp(finalprice);
try語句
try
語句組1
catch
語句組2
End
try語句先試探性執(zhí)行語句組1相艇,如果語句組1在執(zhí)行過程中出現(xiàn)錯誤,則將錯誤信息賦給保留的lasterr變量纯陨,并轉(zhuǎn)去執(zhí)行語句組2坛芽。
循環(huán)結(jié)構(gòu)
for語句
for循環(huán)變量=表達式1:表達式2:表達式3
循環(huán)體語句
end
其中表達式1的值為循環(huán)變量的初值,表達式2的值為步長翼抠,表達式3的值為循環(huán)變量的終值咙轩。步長為1時,表達式2可以省略阴颖。
for語句更一般的格式為:
for循環(huán)變量=矩陣表達式
循環(huán)體語句
end
while語句
while語句的一般格式為:
while (條件)
循環(huán)體語句
end
其執(zhí)行過程為:若條件成立活喊,則執(zhí)行循環(huán)體語句,執(zhí)行后再判斷條件是否成立量愧,如果不成立則跳出循環(huán)钾菊。
break語句和continue語句
它們一般與if語句配合使用。
break語句用于終止循環(huán)的執(zhí)行偎肃。當在循環(huán)體內(nèi)執(zhí)行到該語句時煞烫,程序?qū)⑻鲅h(huán),繼續(xù)執(zhí)行循環(huán)語句的下一語句软棺。
continue語句控制跳過循環(huán)體中的某些語句红竭。當在循環(huán)體內(nèi)執(zhí)行到該語句時,程序?qū)⑻^循環(huán)體中所有剩下的語句喘落,繼續(xù)下一次循環(huán)茵宪。
函數(shù)文件
基本結(jié)構(gòu)
function輸出形參表=函數(shù)名(輸入形參表)
注釋說明部分
函數(shù)體語句
其中以function開頭的一行為引導(dǎo)行,表示該M文件是一個函數(shù)文件瘦棋。函數(shù)名的命名規(guī)則與變量名相同稀火。輸入形參為函數(shù)的輸入?yún)?shù),輸出形參為函數(shù)的輸出參數(shù)赌朋。當輸出形參多于一個時凰狞,則應(yīng)該用方括號括起來篇裁。
Eg:
function[s,p]=fcircle(r)
%CIRCLE calculate the area and
perimeter of a circle of the radii r
%r
%s
%p
%written at 2017/2/7
%AUTHOR Caid
s=pi*r*r;
p=pi*2*r;
函數(shù)調(diào)用
函數(shù)調(diào)用的一般格式是:
[輸出實參表]=函數(shù)名(輸入實參表)
要注意的是,函數(shù)調(diào)用時各實參出現(xiàn)的順序赡若、個數(shù)达布,應(yīng)與函數(shù)定義時形參的順序、個數(shù)一致逾冬,否則會出錯黍聂。函數(shù)調(diào)用時,先將實參傳遞給相應(yīng)的形參身腻,從而實現(xiàn)參數(shù)傳遞产还,然后再執(zhí)行函數(shù)的功能。
函數(shù)參數(shù)的可調(diào)性
在調(diào)用函數(shù)時嘀趟,MATLAB用兩個永久變量nargin和nargout分別記錄調(diào)用該函數(shù)時的輸入實參和輸出實參的個數(shù)脐区。
eg:
functionfout=tran(a,b,c)
ifnargin==1
fout=a;
elseifnargin ==2
fout=a+b;
elseifnargin ==3
fout=(a*b*c)/2;
End
全局變量與局部變量
Global變量名
在函數(shù)文件中需要申明所使用的全局變量
eg:
function f=wadd(x,y)
global ALPHA BETA
f=ALPHA*x+BETA*y;
在命令窗口中輸入:
global ALPHA BETA
ALPHA=1;
BETA=2;
s=wadd(1,2)
程序調(diào)試
Debug
Breakpoints
調(diào)試命令
命令
描述
ctrl-c
結(jié)束調(diào)試,終止仿真
dbcont
繼續(xù)執(zhí)行到下一個斷電
dbquit
結(jié)束調(diào)試她按,終止仿真
dbstep [in|out]
當遇到斷點時牛隅,執(zhí)行下一步進入或者一步執(zhí)行過子函數(shù)
help
顯示help文檔
print?
顯示當前scope中的變量var?in如果var是個向量或矩陣你可以索引變量var.例如,?var(1,2).
save
保存變量到某個文件中。和matlab命令save一樣的用法.恢復(fù)某個變量到matlab工作空間酌泰,,使用load命令
如果變量在當前scope倔叼,和"print "一樣
who
顯示當前scope的變量
whos
顯示當前scope中所有變量的類型和大小