Matlab学习笔记 Day9
注:仅供学习使用,部分内容来自学校课程课件或网络,理性探讨。
1.M文件
(1)脚本文件:也称命令式M文件,或者命令文件,就是命令(或语句)的简单叠加,脚本文件的运行需要在该M文件窗口中点击Run按钮,就会执行该命令
(2)函数文件:用来定义函数,主要解决参数传递和函数调用问题
(创建M文件的方式可以直接在主窗口工具栏New Script命令按钮完成)
2.打开M文件的方法
(1)当前目录窗口直接打开
(2)单击MATLAB主窗口工具栏上的Open file命令按钮
(3)在命令窗口输入命令 edit 文件名
3.输入输出语句(函数)
(1)输入函数 A = input(信息提示,选项);
a = input ('a=?');x = a^2; y = a.^2;
%其中x为数组的平方,y为数组元素的平方
(2)输出函数
disp(变量或者表达式)
display(变量或者表达式)
其中x既可以为字符串,也可以为矩阵。
注意:用disp函数显示矩阵时,将不显示矩阵的名字,而且格式更紧密,不留任何没有意义的空行。
(3)格式化输出函数
fprintf(FID,FORMAT,A,…)
fprintf(FORMAT,A,…)
编辑器M文件:
x=pi;y=exp(x);z=log(x);
fprintf(1, 'x=%8.6f, exp(x)=%10.6f, log(x)=%8.6f\n', x,y,z)
命令行窗口:
>> example1
x=3.141593, exp(x)= 23.140693, log(x)=1.144730
(4)pause命令
pause 暂停程序的执行,等待用户按任意键后再继续
pause(n) n秒后继续运行(pause on 有效)
pause on 表示其后命令起作用
pause off 表示其后命令不起作用
pause query 查询当前状态
例1:编写文件,计算半径为r的球体的表面积和体积。
解:
4.分支结构(选择结构)
(1)单分支if语句
if 条件表达式
语句组
end
(2)双分支if语句
if 条件表达式
语句组1
else
语句组2
end
(3)多分支if语句
if 条件1
语句组1
elseif 条件2
语句组2
……
elseif 条件n
语句组n
else
语句组n+1
end
注意:和C语言不同的是:1.在matlab中,出现if之后,一定要有end与之匹配,表达式为真时,执行if和end之间的语句,否则不执行;2.在matlab中,多分支的elseif两个单词是合在一起写的,而不是else if分开表达(做题的时候没注意所以出了问题,补充这一点)
练习1
解:
5.switch-case结构
switch 表达式
case 表达式1
语句块1
case 表达式2
语句块2
……
case 表达式n
语句块n
otherwise
语句块n+1
end
注意:与C语言的不同之处是:1.switch和case之后无需加冒号,显示语句之后无需加分号;2.无需写break;3.结尾default改为otherwise;4.结尾需要用end来表达
6.try-catch结构
try
语句组1
catch
语句组2
end
执行时试探性的执行语句组1,如果1出错,则将错误信息赋给预定义变量后转去执行语句组2,如果2也出错,程序将终止。
注意:与C的抛出异常结构不同的是:结尾有end标志,在try和catch后无需加参量和大括号,直接执行语句组。
7.循环结构
(1)for一般格式
for 循环变量=数组
循环体语句
end
数组为向量或矩阵。执行时依次将数组的各列赋值给循环变量,然后执行循环体语句,直至各列元素处理完毕。
(2)for常用格式
for 循环变量=表达式1:表达式2:表达式3
循环体语句
end
其中,表达式1为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。当步长为1时,表达式2可以省略。
注意循环的嵌套时,需要输出end的位置和具体含义
(3)while语句
while 条件表达式
循环体语句
end
执行循环体时,执行到break命令时,跳出break所在一层的循环,如果遇到continue命令,则停止执行剩余循环体语句,转到下一次循环的开始。
个人体会:要特别注意MATLAB的语句结构和语法与C/C++有很大的不同,尤其是end语句。若想帮助我们快速判断在循环嵌套时,到底哪一层循环结束,一定要在end语句后用%注释,写明注释非常重要,既可以让我们自己理解,也可以让阅读代码的人更好的理解。