M文件概述
用MATLAB语言编写的程序,称为M文件。M文件可以根据调用方式的不同分为两类:命令文件(Script File)和函数文件(Function File)。
eg:
Program1
clear;%清除工作空间中的变量
f=input('Input Fahrenheit temperature:')
c=5*(f-32)/9
在MATLAB的命令窗口中输入f2c,将会执行该命令文件
Program2
function c=f2c(f)
c=5*(f-32)/9
在MATLAB的命令窗口调用该函数文件。
clear;
y=input('Input Fahrenheit temperature:');
x=f2c(y)
程序控制结构
顺序结构
数据输入
input(提示信息,选项)
选项仅有's',采用时,将输入的文本返回为字符串,而不将输入作为表达式进行评估。
数据输出
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(延迟秒数)
如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。
此函数在用m文件写爬虫时可以用到,python爬虫的休眠是通过什么函数完成?
选择结构
if语句
if条件1
语句组1
elseif条件2
语句组2
……
elseif条件m
语句组m
else
语句组n
end
特点:if后的条件不用括号括起
条件后也没有:号
结尾需要用end语句结束
switch语句
switch表达式
case表达式1
语句组1
case表达式2
语句组2
……
case表达式m
语句组m
otherwise
语句组n
end
特点:switch后的条件不用括号括起
条件后也没有:号
结尾需要用end语句结尾
case后不需要跟break语句,直接调出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语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。
循环结构
for语句
for循环变量=表达式1:表达式2:表达式3
循环体语句
end
其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。
for语句更一般的格式为:
for循环变量=矩阵表达式
循环体语句
end
while语句
while语句的一般格式为:
while (条件)
循环体语句
end
其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环。
break语句和continue语句
它们一般与if语句配合使用。
break语句用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。
continue语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。
函数文件
基本结构
function输出形参表=函数名(输入形参表)
注释说明部分
函数体语句
其中以function开头的一行为引导行,表示该M文件是一个函数文件。函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于一个时,则应该用方括号括起来。
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;
函数调用
函数调用的一般格式是:
[输出实参表]=函数名(输入实参表)
要注意的是,函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出错。函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。
函数参数的可调性
在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。
eg:
functionfout=tran(a,b,c)
ifnargin==1
fout=a;
elseifnargin ==2
fout=a+b;
elseifnargin ==3
fout=(a*b*c)/2;
End
全局变量与局部变量
Global变量名
在函数文件中需要申明所使用的全局变量
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)
程序调试
Debug
Breakpoints
调试命令
命令
描述
ctrl-c
结束调试,终止仿真
dbcont
继续执行到下一个断电
dbquit
结束调试,终止仿真
dbstep [in|out]
当遇到断点时,执行下一步进入或者一步执行过子函数
help
显示help文档
显示当前scope中的变量var in如果var是个向量或矩阵你可以索引变量var.例如, var(1,2).
save
保存变量到某个文件中。和matlab命令save一样的用法.恢复某个变量到matlab工作空间,,使用load命令
如果变量在当前scope,和"print "一样
who
显示当前scope的变量
whos
显示当前scope中所有变量的类型和大小