前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Matlab系列之程序控制

Matlab系列之程序控制

作者头像
狂人V
发布于 2020-07-14 12:32:55
发布于 2020-07-14 12:32:55
1.3K00
代码可运行
举报
文章被收录于专栏:电子狂人电子狂人
运行总次数:0
代码可运行

在Matlab中,具有四类程序控制结构方式,依次是:条件控制、循环控制、误差控制和程序终止,接下来一一对其进行介绍。

1 条件控制语句

在编写程序时,会根据需要,使用不同的条件控制语句,可以是判断语句也可以是分支语句。

判断语句

看到名字,我想你也已经猜到了一些东西,写过C或者其他相关程序的,都知道一种条件判断语句,也就是if语句,在Matlab中通常使用if-else-end分支结构,包含单分支、双分支和多分支3种形式,结构比较简单。

单分支如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if 逻辑表达式
    执行代码块;
end

双分支:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if 表达式
    执行代码块1;
else
    执行代码块2;
end

多分支:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if 表达式1
    执行代码块1;
else if 表达式2
    执行代码块2;
else
    执行代码块3;
end

以上3种分支结构实现都是一样,当逻辑表达式或者表达式为真时(逻辑表达式为非空数组、为非零变量、矩阵变量所有元素都非零都为真)则进入相应表达式下的执行代码块,然后结束;若为假,则进入下一级表达式判断,直至判断结束。

分支语句

可能看到名字,你会有点陌生,但是看到switch后,你是否就恍然大悟了呢~

其结构:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
switch 表达式(标量或字符串)
    case value1
        执行代码块1;
    case value2
        执行代码块1;
        ...............
    otherwise
    执行代码块N;
end

结构表达很简单,当表达式是一个标量时,就与相应的value进行比较,然后进入对应的执行代码块,例如和value1相等,就执行代码块1;和value2相等,就执行代码块2;如果所有的value都不与之相等,则进入otherwise执行相应的的代码块;如果表达式是一个字符串,也是一样的比较,只是MATLAB在比较时会自动调用strcmp函数,也就是字符串比较的函数,从而实现字符串的比较。

接下来对switch语句做个简单使用:

程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

switch value
    case 1
        disp('1');
    case {2,3,4}
        disep('2 or 3 or 4');
    case 5
        disp('5')
    otherwise
        disp('Other number');
end

手动输入一个value的值,然后运行脚本进行判断结果的输出:

2 循环控制语句

相信大家对于循环语句就更熟悉了,for和while,我想写过程序的都用过;在MATLAB中的表达可能会和一些语言的表达形式不太一样,但是使用的效果一致,for的结构为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for 循环变量=开始值:增量:结束值
    循环体
end

增量默认为1,可以设置为任何值,其他的使用与C或者相关语言的一致。

演示下嵌套的使用

程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for m=1:3
    for n=1:5
       A(m,n)=1/(m+n-1)
    end
end

分析:

第1、2行代表的就是建立一个3行5列的矩阵,第3行就是具体构建m行n列的矩阵并进行对应元素赋值操作。

结果:

while语句是通过判断条件表达式的真假性,从而实现循环;

其结构为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
while 条件表达式
    循环体
end

直接演示一个程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
n=1;
while prod(1:n)<1e100< span="">
    n=n+1;
end

结果:

这个程序的作用就是计算n!<1e< span="">100的最大n值,其中的prod就是实现数组元素的乘积,当小于1e100的时候,n就进行累加,直至得到最大的n值。

3 误差控制语句

我看到这个名字的第一眼,其实也是很懵逼的,为什么叫误差控制呢?然后学了之后就懂意思了,大概是这样的,类似条件判断语句,如果if的表达式不对,就进行下一个的判断或者直接运行else中的代码块,只是误差控制语句变成来try-catch-end的样子,具体结构:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
try
    程序代码块1,%总被执行,若正确,即跳出此结构
catch
    程序代码块2,%仅当程序代码块1出现错误,该代码块才被执行
end

如果程序代码块2也错了,则会终止运行的程序,若还有其他try-catch-end的语句,就会继续运行下一个try-catch-end,并且可以使用laster命令查看发生错误的原因(查看上一处错误),演示一段程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
n=4;
A=pascal(3);
try
A_n=A(n,:),
catch
A_end=A(end,:),
end

结果:

分析:使用pascal(3)构建了一个3x3的三角形矩阵,但是n=4,因此A_n=A(n,:)这一部分的代码相当于是错的,所以进入下一部分,即A_end=A(end,:),然后将最后一行赋值并显示在窗口。

注意:try-catch-end语句中代码块是使用逗号隔开的,而不是分号!!!

4 程序终止语句

在程序设计中通常需要提前终止循环、结束程序的运行、显示错误信息等情况,在MATLAB中,就具有continue、break、return、error等语句,接下来对其进行简单的介绍。

4.1 continue语句

该语句常用于循环控制中,使得当次的循环结束,继续下一次循环,并不是结束整个循环,直接做个演示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fid=fopen('magic.m','r');
count=0;
while ~feof(fid)%判断是否为文本的最后一行
    line=fgetl(fid);%读取当前文本中当前行的下一行
    if isempty(line)|strncmp(line,'%',1)%判断是否是空行或者注释(判断%号即可)
        continue%若是空行或者注释就退出当次循环
    end
    count=count+1;
end
disp(sprintf('%d lines',count));

结果,显示除去空行以及注释行后的代码行数,其中magic是系统内置的一个文件,可以直接在命令窗口行输入“open magic.m”打卡该文件进行结果的比对:

4.2 break语句

该语句虽然也是用于循环控制的,但是它的功能是直接中断当前的循环,不再执行该循环的任何操作,程序演示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fid=fopen('fft.m','r');
s='';
while ~feof(fid)
    line=fgetl(fid);
    if isempty(line),break,end
    s=strvcat(s,line);
end
disp(s)

结果:

分析:打开fft.m文件进行对比,会发现,在有空行时,就结束了文件内容的打印,关于文件的操作,会在之后的记录中出现,如果有不懂的地方,可以过段时间再来理解。

4.3 return语句

该语句就是将结束正在运行的函数,并且返回调用函数,一般是在函数的末尾正常结束函数的运行,也可以是在满足某种条件的时候强制结束函数运行并返回调用函数,这个就不做程序的演示了。

4.4 error语句

该语句理解更简单,就是直接终止当前函数的运行,并且显示出错信息,运行程序出错的时候那一串红色的字很醒目吧,那就是使用error产生的,当然warning就是使用warning语句了,使用语法:error('error message!!!')

结果:

还有一些语句,因为时间关系就不做介绍了,不过都比较简单,有的在之前也有过介绍,剩下的可以自行使用帮助系统进行学习使用,有input、keyboard、pause...

END

今天的内容中,如果遇到不懂的命令,我也没有对其进行讲解的,之后我讲到其他内容时可能会继续讲到,比如文件操作的相关,如果可以的话,命令行help挺好的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 电子狂人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MATLAB-循环类型相关(for while break continue)
在一般的情况下,程序中的语句都是按照顺序执行的,先从函数中的第一条语句开始执行,然后执行第二条并且依次类推。但是也会存在一种情况:需要多次执行代码块,怎么办?
用户9925864
2022/07/27
1.4K0
MATLAB-循环类型相关(for while break continue)
【MATLAB 从零到进阶】day4 MATLAB程序设计
MATLAB作为一种程序设计语言,它提供了选择语句结构和循环语句结构,其中选择语句结构又包括:if/elseif条件转移语句结构,switch开关语句结构,try…catch试探语句结构;循环语句结构包括:for循环语句结构和while循环语句结构。除此之外,MATLAB还提供了continue、break、return和pause等流程控制函数
统计学家
2019/04/10
9880
【MATLAB 从零到进阶】day4  MATLAB程序设计
程序控制结构--If..Then系列语句
大家好,之前概述过VBA的程序控制结构,本节将详细介绍判断结构中的If...Then系列语句,判断结构相当于汽车的方向盘,它让VBA程序可以根据条件规则来进行判断,然后执行不同分支语句。
无言之月
2019/10/13
4.6K0
Java 程序控制结构
在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。
用户9615083
2022/12/25
4980
Java 程序控制结构
Matlab循环语句_matlab中if语句的用法
《matlab循环语句》由会员分享,可在线阅读,更多相关《matlab循环语句(9页珍藏版)》请在人人文库网上搜索。
全栈程序员站长
2022/11/10
3.1K0
Simulink建模与仿真(5)-Simulink使用基础(M文件与MATLAB函数)
“工欲善其事,必先利其器。”用户应首先熟悉一下最经常使用的M文件编辑器(M File Editor)。M文件编辑器不仅仅是一个文字编辑器,它还具有一定的程序调试功能,虽然没有像VC、BC那样强大的调试能力,但对于调试一般不过于复杂的MATLAB程序已经足够了。
用户9925864
2023/09/18
2.2K0
Simulink建模与仿真(5)-Simulink使用基础(M文件与MATLAB函数)
C语言的流程控制语句
        控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。
Srlua
2024/03/01
2250
Python升级之路(四) 控制语句
第一章 Python 入门 第二章 Python基本概念 第三章 序列 第四章 控制语句
时间静止不是简史
2022/05/26
1.9K0
Python升级之路(四) 控制语句
第三章:MATLAB基础教程:控制流程和条件语句
在MATLAB中,控制流程和条件语句使您能够根据不同的条件来控制程序的执行路径。本教程将详细讨论MATLAB中常见的控制流程结构,并提供具体案例和代码示例。
GeekLiHua
2025/01/21
1880
Java 程序控制结构(1)
        当条件表达式为 true 时,就会执行{ }中的代码块。如果为 false ,就不执行代码块。
周小末天天开心
2022/10/26
3140
MATLAB循环_matlab如何循环计算
1. while循环 在给定条件为真时,重复一个语句或一组语句。它在执行循环体之前测试状态。 语法 MATLAB中while循环的语法是 : while <expression> <statements> end 只要表达式(expression)为true,while循环将重复执行程序语句(statements)。 当结果为非空并且包含所有非零元素(逻辑或实数)时,表达式(expression)为true。 否则,表达式(expression)为false。 栗子: a = 10; % while loop execution while( a < 20 ) fprintf(‘value of a: %d\n’, a); a = a + 1; end 执行上面示例代码,得到以下结果 – value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 15 value of a: 16 value of a: 17 value of a: 18 value of a: 19 2. for循环 多次执行一系列语句,并缩写管理循环变量的代码。 for循环是一种重复控制结构,可以让您有效地编写一个需要执行特定次数的循环。 语法 MATLAB中for循环的语法是 for index = values <program statements> … End 值(values)具有以下格式 – 值格式 描述 initval:endval index变量从initval到endval每次递增1,并重复程序语句 的执行,直到index大于endval。 initval:step:endval 通过每次迭代值步长(step)增加索引(index)的值,或者 当step为负时递减。 valArray 在每个迭代中从数组valArray的后续列创建列向量索 引。 例如,在第一次迭代中,index = valArray(:,1)。 循环最多执行n次,其中n是由numel(valArray,1,:)给出的valArray的列数。valArray可以是任何MATLAB数据类型,包括字符串,单元格数组或结构体。 前两种挺简单的,所以在此值对于第三种语法进行举例子说明: X=rand(5,1); for i=X i end X=rand(1,5); for i=X i end 运行结果是: i = 0.4898 0.4456 0.6463 0.7094 0.7547 i = 0.2760 i = 0.6797 i = 0.6551 i = 0.1626 i = 0.1190 注意:对于向量建立的是列向量索引!! X=magic(3); X for i=X i end 运行输出
全栈程序员站长
2022/11/10
2.6K0
Java程序控制结构
break 语句用于终止某个语句块的执行,一般使用在switch 或者循环[for , while , do-while]中。
timerring
2023/04/21
3250
Java程序控制结构
Java 控制语句
if 语句会判断括号中的条件是否成立,如果成立则执行 if 语句中的代码块,否则跳过代码块继续执行。
静默虚空
2019/05/25
1.1K0
通俗易懂PHP基础【7-控制语句】
如果你每天能抽出半点钟,你每天至少可以读三四页,每月可以读一百页,到了一年也就可以读四五本书。何况你在假期中每天断不会只能读三四页呢?你能否在课外读书,不是你有没有时间的问题,是你有没有决心的问题。
Lemon黄
2019/10/08
4780
通俗易懂PHP基础【7-控制语句】
matlab 函数,matlab 语法1
如:输入:f = fullfile(‘C:’,’Applications’,’matlab’,’fun.m’) 得到:f =C:\Applications\matlab\fun.m
zhangjiqun
2024/12/17
1610
matlab 函数,matlab 语法1
数学建模------MATLAB学习使用
多项式就是使用行向量分别表示前面的系数,这个需要按照一定的顺序,而且为0的系数不能够省略,按照从高到低的顺序进行表示;
阑梦清川
2025/02/24
850
数学建模------MATLAB学习使用
如何用matlab编写分段函数_请教各位怎样用matlab定义一个分段函数MATLAB分段函数…[通俗易懂]
20世纪70年代,美国新墨西哥大学计算机科学系主任Cleve Moler为了减轻学生编程的负担,用FORTRAN编写了最早的MATLAB。1984年由Little、Moler、Steve Bangert合作成立了的MathWorks公司正式把MATLAB推向市场。到20世纪90年代,MATLAB已成为国际控制界的标准计算软件。
全栈程序员站长
2022/09/01
2.6K0
【精通C语言】:分支结构if语句的灵活运用
本篇介绍的是控制语句。 控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选 择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。 可分成以下三类:
屿小夏
2024/01/22
1900
【精通C语言】:分支结构if语句的灵活运用
【STM32H7的DSP教程】第5章 Matlab简易使用之常用编程语句
完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第5章   Matlab简易使用之常用编程语句 本期教程主要是讲解M
Simon223
2020/04/08
3910
matlab
对于一些nc数据或者遥感影像处理时,虽然一些第三方软件可以出图,但我们往往需要借助python或者matlab软件进行数据处理,但最后保存下来数据如何导入arcgis进行分析呢?
用户6841540
2024/08/05
3580
推荐阅读
相关推荐
MATLAB-循环类型相关(for while break continue)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验