《MATLAB/Simulink系统仿真超级学习手册》——2.4 MATLAB的程序流程控制

简介:

本节书摘来自异步社区《MATLAB/Simulink系统仿真超级学习手册》一书中的第2章,第2.4节,作者:MATLAB技术联盟 , 石良臣著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.4 MATLAB的程序流程控制

MATLAB/Simulink系统仿真超级学习手册
作为一种程序设计语言,MATLAB同一般高级程序语言一样,为用户提供了丰富的程序结构语言来实现用户对程序流程的控制。

MATLAB的程序路程控制主要包括循环控制和条件选择控制。

2.4.1 循环控制结构
1.for循环结构

for循环结构的格式为

  for 循环变量=向量表达式
    循环体语句组
  end

该循环结构的执行方式为:从向量表达式的第一列开始,依次将向量表达式各列的值赋值给循环变量,然后执行循环体语句组中的命令,直到最后一列。

通常使用的for循环格式为

for i = s : h : e

即用冒号表达式进行等步长向量的创建。

注意:循环语句组必须是一组合法的MATALB命令;end不可省略。

screenshot

在MATLAB命令窗口中输入下面语句并按回车键确认。

>> sum=0;
>> for i=1:1:50
sum=sum+i;
end
>> sum

运行结果如下:

sum =
      1275

注意:可将for i = 1:1:50写成for i = 1:50,因为系统默认步长为1,所以可以省略中间的“:1”。for循环语句可以实现多重循环,但for与end必须成对出现。

2.while循环结构
while循环结构的基本格式为

while关系表达式
    循环体语句组
  end

该循环结构的执行方式为:

(1)判断关系表达式是否为真,若为真,则执行(2),否则执行(3);

(2)执行循环体语句组中的命令,再返回至(1);

(3)执行end语句,即循环结束。

screenshot

在MATLAB命令窗口中输入下面语句并按回车键确认。

>> sum=0;
>> i=1;
>> while i<=50
sum=sum+i;
i=i+1;
end
>> sum

运行结果如下:

sum =
     1275

计算结果与例2-13一致。

条件选择结构
1.if条件选择结构
条件选择结构中最基本的是if条件选择结构语句。if条件选择结构有3种基本格式:

(1) if 条件表达式

    `javascript
条件语句组
    end

(2) if 条件表达式

条件块语句组 1
    else
      条件块语句组 2
    end

(3) if 条件表达式 1

条件块语句组 1
    elseif 条件表达式 2
      条件块语句组 2
    …
    elseif条件表达式 n-1
      条件块语句组 n-1
    else
      条件块语句组 n
    end

注意:

(1)else子句不能单独使用,必须与if配对使用;

(2)if条件选择结构可以嵌套使用

【例2-15】学生成绩分类:90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E,要求输入一个分数输出其对应等级。

在MATLAB命令窗口中输入下面语句并按回车键确认。

grade=input('Please enter a grade:');
if grade>=90

  degree='A';
elseif (grade>=80)&&(grade<=89)
  degree='B';
elseif (grade>=70)&&(grade<=79)
  degree='C';
elseif (grade>=60)&&(grade<=69)
  degree='D';
else
  degree='E';
end
disp(['The degree is ',degree])

MATLAB命令窗口中显示Please enter a grade,要求输入成绩,输入76并按回车键确认,得到结果The degree is C,该成绩等级为C。

2.switch条件选择结构
switch条件选择结构用于多分支选择,其基本格式为:

switch(表达式)
    case 常量表达式1

语句组1

case 常量表达式2

语句组2

    case 常量表达式n

语句组n

otherwise:

语句组 n+1

end

【例2-16】学生成绩分类:90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E,要求输入一个等级输出其对应分数。

在MATLAB命令窗口中输入下面语句并按回车键确认。

degree=input('Enter a degree:');

switch degree
  case 'A'
    disp('The grade is 90-100.');
  case 'B'
    disp('The grade is 80-89.');
  case 'C'
    disp('The grade is 70-79.')
  case 'D'
    disp('The grade is 60-69.')
  case 'E'
    disp('The grade is 0-59.')
  otherwise
    disp('There is no this degree.')
end

相关文章
|
23天前
OFDM深入学习及MATLAB仿真(二)
OFDM深入学习及MATLAB仿真
22 1
|
23天前
|
机器学习/深度学习
信道编码译码及MATLAB仿真(三)
信道编码译码及MATLAB仿真
28 3
|
23天前
|
算法
信道编码译码及MATLAB仿真(二)
信道编码译码及MATLAB仿真
25 3
|
1月前
|
机器学习/深度学习 数据采集 人工智能
m基于深度学习网络的手势识别系统matlab仿真,包含GUI界面
m基于深度学习网络的手势识别系统matlab仿真,包含GUI界面
41 0
|
1月前
|
机器学习/深度学习 算法 计算机视觉
基于yolov2深度学习网络的视频手部检测算法matlab仿真
基于yolov2深度学习网络的视频手部检测算法matlab仿真
|
1月前
|
算法
m基于OFDM+QPSK和LDPC编译码以及MMSE信道估计的无线图像传输matlab仿真,输出误码率,并用图片进行测试
MATLAB2022a仿真实现了无线图像传输的算法,包括OFDM、QPSK调制、LDPC编码和MMSE信道估计。OFDM抗频率选择性衰落,QPSK用相位表示二进制,LDPC码用于前向纠错,MMSE估计信道响应。算法流程涉及编码、调制、信道估计、均衡、解码和图像重建。MATLAB代码展示了从串行数据到OFDM信号的生成,经过信道模型、噪声添加,再到接收端的信道估计和解码过程,最终计算误码率。
21 1
|
4天前
|
机器学习/深度学习 人工智能 算法
基于DCT和扩频的音频水印嵌入提取算法matlab仿真
本文介绍了结合DCT和扩频技术的音频水印算法,用于在不降低音质的情况下嵌入版权信息。在matlab2022a中实现,算法利用DCT进行频域处理,通过扩频增强水印的隐蔽性和抗攻击性。核心程序展示了水印的嵌入与提取过程,包括DCT变换、水印扩频及反变换步骤。该方法有效且专业,未来研究将侧重于提高实用性和安全性。
|
23天前
数字频带传输——多进制数字调制及MATLAB仿真
数字频带传输——多进制数字调制及MATLAB仿真
36 2
|
2天前
|
机器学习/深度学习 算法 数据挖掘
基于PSO优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真
该文档介绍了使用MATLAB2022A中PSO优化算法提升时间序列预测模型性能的过程。PSO优化前后对比显示了优化效果。算法基于CNN、LSTM和Attention机制构建CNN-LSTM-Attention模型,利用PSO调整模型超参数。代码示例展示了PSO的迭代优化过程及训练、预测和误差分析环节。最终,模型的预测结果以图形形式展示,并保存了相关数据。
|
23天前
雷达模糊函数及MATLAB仿真(三)
雷达模糊函数及MATLAB仿真
15 0

热门文章

最新文章