专题三 MATLAB程序流程控制
Posted 晁棠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了专题三 MATLAB程序流程控制相关的知识,希望对你有一定的参考价值。
本篇是B站视频的笔记。
3.1 顺序结构程序
程序和程序设计
什么叫程序?
程序是用某种计算机能够理解并且能够执行的语言来描述的解决问题的方法和步骤。
程序设计的基本步骤
分析问题,确定求解问题的数学模型或方法 → 设计算法,并画出流程图 → 选择编程工具,根据算法编写程序 → 调试程序,分析程序输出结果
程序的3中基本结构
- 顺序结构
- 选择结构
- 循环结构
脚本文件和函数文件
脚本文件是可以在命令行窗口直接执行的文件,也叫命令文件。
函数文件是定义一个函数,不能直接执行,而必须以函数调用的方式来调用。
文件的建立
- 用命令按钮创建文件。
- 用edit命令创建文件。
>> edit test
就相当于,以往写C的程序的时候,函数是可以直接在主函数上创建。
而MATLAB可以制作成一个函数文件,直接调用文件即可。
顺序结构
(1)数据的输入
A=input(提示信息,选项);
>> A=input('请输入变量A的值:');
请输入变量A的值: 100
(2)数据的输出
disp(输出项)
>> s='TC';
>> disp(s)
TC
>> a=[1,2,3;4,5,6];
>> disp(a)
1 2 3
4 5 6
(3)程序的暂停
pause(延迟秒数)
若延迟秒数不写,则延迟至下一次点击。
若要强行中止程序的运行可使用Ctrl+C命令。
从程序功能上讲,MATLAB一般包含三个步骤
- 输入原始数据
- 对原始数据进行处理
- 输出处理结果
3.2 用if语句实现选择结构
什么事选择结构?
选择结构由称为分支结构,是根据给定的条件是否成立来决定程序的执行流程。
- 用if语句实现选择结构
- 用switch语句实现选择结构
单分支if语句
语句格式:
if 条件
语句组
end
当条件结果为标量时,非零表示条件成立,零表示条件不成立。
当条件结果为矩阵时,如果矩阵为非空,且不包含零元素,则条件成立,否则不成立。
例如,[1,2;0,4]表示条件时,条件不成立;[1,2;3,4]表示条件时,条件成立。
双分支if语句
语句格式:
if 条件
语句组1
else
语句组2
end
多分支if语句
if 条件1
语句组1
elseif 条件2
语句组2
……
elseif 条件m
语句组m
else
语句组n
end
在多分支if语句中不管有几个分支,程序执行完一个分支后,其余分支将不会再执行,这时整个if语句结束。
3.3 用switch语句实现选择结构
switch语句的格式
switch 表达式
case 结果表1
语句组1
case 结果表2
语句组2
……
case 结果表m
语句组m
otherwise
语句组n
end
switch表达式应该是一个其值可以列举的表达式。
case结果表为switch表达式的取值,当取值有多个时,用单元数据表示。
MATLAB的switch-case语句比C语言的人性化多了,不用纠结break
// num2cell函数:将数值矩阵转换为单元矩阵
3.4 用for语句实现循环结构
什么是循环结构?
循环结构又称为重复结构,是利用计算机运算速度快以及能进行逻辑控制的特点来重复执行某些操作。
for语句
格式:
for 循环变量=表达式1:表达式2:表达式3
循环体语句
end
表达式1:初值
表达式2:步长
表达式3:终值
说明:
for语句针对向量的每一个元素执行一次循环体
推出循环之后,循环变量的值就是向量中最后的元素值。
向量为空时,循环体一次也不执行。
按照MATLAB的定义,for语句的循环变量也可以是一个列向量,其格式为:
for 循环变量=矩阵表达式
循环体语句
end
for k=[1,2,3,4] 循环4次 有4个列向量
for k=[1;2;3;4] 循环1次 有1个列向量
3.5 用while语句实现循环结构
while语句
格式:
while 条件
循环体语句
end
while语句多用于循环次数不确定的情况,而对于循环次数确定的情况,使用for语句更方便。
针对不同的情况可以选择不同的循环语句,但从功能上讲两种循环语句可以相互替代。
break语句和continue语句
- break语句用来跳出循环体,结束整个循环
- continue语句用来结束本次循环,接着进行下一次是否执行循环的判断。
循环的嵌套
如果一个循环结构的循环体又包含一个循环结构,就称为循环的嵌套,或称为多重循环结构。
3.6 函数文件的定义与调用
函数文件的基本结构
function 输出形参表=函数名(输入形参表)
注释说明部分
函数体语句
当有多个形参时,形参之间用逗号分隔,组成形参表。当输出形参多余一个时,应该用方括号括起来,构成一个输出矩阵。
- 函数文件名通常由函数名再加上扩展名.m组成,函数文件名与函数名也可以不相同。
- return语句表示结束函数的执行。
函数调用
调用格式:
[函数实参表]=函数名(输入实参表)
在调用函数时,函数输入输出参数称为实际参数,简称实参。
匿名函数
基本格式:
函数句柄变量=@(匿名函数输入参数)匿名函数表达式
函数句柄变量=@函数名
函数为内部函数或自定义函数
3.7 函数的递归调用
函数的嵌套调用
在一个函数中调用了其他函数
函数的递归调用
一个函数调用它自身称为函数的递归调用。
递归是把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
(1)直接递归调用
(2)间接递归调用
3.8 函数参数与变量的作用域
函数参数的可调性
MATLAB有两个预定义变量
nargin:输入实参的个数
nargout:输出实参的个数
全局变量与局部变量
局部变量是指在程序中只在特定过程或函数中可以访问的变量。
全局变量的作用域是整个MATLAB工作空间,也就是全程有效,所有的函数都可以对它进行存取和修改。
全局变量定义格式:
global 变量名
以上是关于专题三 MATLAB程序流程控制的主要内容,如果未能解决你的问题,请参考以下文章