命令式文件——M文件
Tip:使用<Ctrl>或者<Shift>可以选择多条历史命令
- 命令窗口输入edit
- 单击工具栏的“创建”
- File->New->Blank M-File
用于创建M文件
例:求sin(0)到sin(10)的值
for i=0:10
a=sin(i);
fprintf( 'sin(%d)=',i)
fprintf( '%.4f\n',a)
end
命名为sinvalve,指定文件路径后,在命令窗口输入
>> sinvalve
sin(0)=0.0000
sin(1)=0.8415
sin(2)=0.9093
sin(3)=0.1411
sin(4)=-0.7568
sin(5)=-0.9589
sin(6)=-0.2794
sin(7)=0.6570
sin(8)=0.9894
sin(9)=0.4121
sin(10)=-0.5440
函数题头:function [输出变量列表]=函数名(输入变量列表)
帮助信息索引行:函数帮助文本的第一行内容为该函数的大致描述,当使用lookfor查看该函数时,显示该行
帮助详细信息:提供函数的完整帮助信息,包括索引行到第一个可执行行或者空行为止的所有注释信息,通过MATLAB的帮助系统查看函数的帮助信息时,显示该部分
函数体:函数的daimaduan
注释部分:对函数题语句的解释和说明文本,注释以英文状态下的“%”引导
function y= AverageVector( x )
% AVERAGEVECTOR Mean of vector elements
% AVERAGEVECTOR(X), where x is a vector, is the mean of
%vector elements. Nonvector input is an error.
[m,n]=size(x);
if (~((m==1)||(n==1)))
disp( '输入必须是向量');
return;
end
y=sum(x)/length(x);
for循环语句
for 循环变量=表达式1(初值):表达式2(增量):表达式3(终值)
循环语句组
end
>> for i=1:10
x(i)=(i).^2;
end
>> x
x =
[ 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
while循环语句
while 表达式
执行语句
end
例:1~100求和
>> sum=0;i=1;
>> while(i<=100)
sum=sum+i;i=i+1;
end
>> sum
if 表达式
执行语句
end
if 表达式
执行语句1
else
执行语句2
end
%当if有三种及以上选择时
if 表达式1
执行语句1
elseif 表达式2
执行语句2
elseif 表达式3
执行语句3
...
else 执行语句
end
x=-6:0.1:6; %
leng=length(x); %
for m=1:leng
if x(m)<=0
y(m)=sin(x(m));
elseif x(m)<=3
y(m)=x(m);
else
y(m)=-x(m)+6;
end
end
plot(x,y, '*'),grid; %
switch-case
switch <选择判断量>
case 选择判断值1
选择判断语句1
case 选择判断值2
选择判断语句2
...
otherwise
判断执行语句
end
特别注意:MATLAB的switch-case和c中的switch-case的不同之处在于,MATLAB当其中一个case为真时,switch-case语句不对后面的case语句进行判断。也就是说即使有多个case判断语句为真,也只执行第一条为真的语句,而不必像c语言中在每个case语句之后加上一个break来防止继续执行后面为真的case条件语句。
例:判断季节
%Seasons
function demo_switch_case(month)
switch month
case {3,4,5}
season= 'Spring'
case {6,7,8}
season= 'Summer'
case {9,10,11}
season= 'Fall'
case {12,1,2}
season= 'Winter'
otherwise
season= 'Not exist'
end
echon命令可以使M文件的命令在执行时可见,对于程序的调试和演示很有用。对于M文件中文本文件和函数文件,echo命令的作用稍有不同
echo on%打开文本文件的回应命令
echo off%关闭回应命令
echo file on%使指定的file文件的命令在执行中被显示出来
echo file off%关闭指定文件的命令在执行中的回应
echo file%文件在执行中的回应显示开关
echo on all%显示其后所有执行文件的执行过程
echo off all%关闭其后所有执行文件的显示
input命令:用来提示用户从键盘输入字符、字符串或表达式,并接受输入值
pause命令:用于程序暂时终止运行,等待用户按任意键后继续执行
pause %暂停程序,等待回应
pause(n) %在程序运行中等待n秒后继续执行
pause on %显示其后的pause命令,并且执行pause命令
pause off %显示其后的pause命令,但不执行该命令
keyboard命令:当程序遇到该命令时就暂停运行程序,处于等待键盘输入状态且在屏幕上显示字符K。键盘处理完毕后,输入字符串return,程序将继续执行。
例:判断是否是闰年
disp( 'please input a year:')
keyboard
leapyear(ans)
输入数字回车后,继续在命令行中输入return,控制权返回给MATLAB,即可判断输入年份是否是闰年
常用Debug方法:
- 在可能发生错误的M文件删去某些语句末行的分号,使其显示运行的中间结果。(利用return命令恢复程序的执行)
- 在M文件适当的位置加上keyboard命令,使其在执行到此处时暂停
- 注释掉M文件的函数定义行,使函数文件转变成脚本文件,这样在程序出错时,可以查看M文件产生的中间变量。注意,局部变量之间应避免冲突
- 使用MATLAB调试器设置断点,或单步执行
Set/Clear Breakpoint:设置或清除断点
Set/Modify Conditional Breakpoint:设置/修改条件断点
Enable/Disable Breakpoint:开启或者关闭当前行的断点
在同一幅图中画出多条曲线
使用hold on
plot( )
plot()
plot()
...
hold off命令