《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

相关文章
|
4天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化的CNN-GRU的时间序列回归预测matlab仿真
- **算法理论:** 利用PSO优化的CNN-GRU,结合CNN的特征提取和GRU的记忆机制,进行时间序列预测。 - **CNN:** 通过卷积捕获序列的结构信息。 - **GRU:** 简化的LSTM,处理序列依赖。 - **预测步骤:** 1. 初始化粒子群,每粒子对应一组模型参数。 2. 训练并评估CNN-GRU模型的验证集MSE。 3. 使用PSO更新参数,寻找最佳配置。 4. 迭代优化直至满足停止准则。 ```
|
3天前
|
监控
基于偏微分方程离散化计算的地下换热器建模与温度检测matlab仿真
**摘要:** 探索地下换热器的建模与温度检测,使用MATLAB2022a进行系统仿真,关注传热过程的热传导、对流和辐射。通过离散化偏微分方程建立数值模型,模拟温度场,考虑地质特性和水流影响。建模以网格单元描述温度变化,采用热电偶、红外和光纤测温技术验证模型并监控温度,各具优缺点。光纤测温法提供高精度和抗干扰的分布式监测。
|
3天前
|
算法 数据安全/隐私保护
基于GA遗传优化算法的Okumura-Hata信道参数估计算法matlab仿真
在MATLAB 2022a中应用遗传算法进行无线通信优化,无水印仿真展示了算法性能。遗传算法源于Holland的理论,用于全局优化,常见于参数估计,如Okumura-Hata模型的传播损耗参数。该模型适用于150 MHz至1500 MHz的频段。算法流程包括选择、交叉、变异等步骤。MATLAB代码执行迭代,计算目标值,更新种群,并计算均方根误差(RMSE)以评估拟合质量。最终结果比较了优化前后的RMSE并显示了SNR估计值。
16 7
|
1天前
|
机器学习/深度学习 算法 数据挖掘
基于改进K-means的网络数据聚类算法matlab仿真
**摘要:** K-means聚类算法分析,利用MATLAB2022a进行实现。算法基于最小化误差平方和,优点在于简单快速,适合大数据集,但易受初始值影响。文中探讨了该依赖性并通过实验展示了随机初始值对结果的敏感性。针对传统算法的局限,提出改进版解决孤点影响和K值选择问题。代码中遍历不同K值,计算距离代价,寻找最优聚类数。最终应用改进后的K-means进行聚类分析。
|
1天前
|
算法 5G 数据安全/隐私保护
基于MIMO系统的预编码matlab性能仿真
**摘要** 本文展示了在MATLAB2022a中运行的无水印预编码算法效果。核心程序采用详细中文注释,涉及MIMO系统中关键的MMSE和量化预编码技术。MMSE准则追求信号估计的准确性,通过利用信道状态信息优化发射,减少干扰,适合高容量需求;而量化准则结合格雷码量化,将连续信号映射至离散集合,简化硬件实现,适用于功耗敏感场景,但会引入量化误差。两者权衡了性能与实现复杂度。
|
1天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于Qlearning强化学习的小车弧线轨迹行驶控制matlab仿真
**MATLAB 2022a仿真实现Q-learning控制小车弧线行驶,展示学习过程及奖励变化。Q-learning是无模型强化学习算法,学习最优策略以稳定行驶。环境建模为二维平面,状态包括位置、朝向,动作涵盖转向、速度。奖励函数鼓励保持在轨迹上,用贝尔曼方程更新Q表。MATLAB代码动态显示轨迹及奖励随训练改善。**
25 15
|
3天前
|
算法 物联网
机会路由MORE协议的matlab性能仿真
摘要: 本研究关注无线Mesh网络中的机会路由与网络编码融合技术,特别是MORE协议。机会路由利用无线特性提高网络效率,而网络编码提升网络吞吐量。在分析这两项技术的基础上,提出改进MORE的方案,优化节点选择和路径测量,以增强网络性能。使用MATLAB2022a进行仿真验证。尽管MORE独立于MAC层并应用线性网络编码,但其ETX测量可能存在不准确问题,该问题成为改进的重点。
|
1天前
|
算法
六自由度Stewart平台的matlab模拟与仿真
**摘要** 探索MATLAB2022a模拟6-DOF Stewart平台,模拟动态变化及伺服角度。平台实现XYZ平移及绕XYZ轴旋转。结构含中心动平台、固定基座及6个伺服驱动的伸缩连杆。运动学原理涉及球铰/虎克铰的转动自由度。通过动力学分析解决输入力矩到平台加速度的转换。核心算法与模型揭示了平台的精密定位能力。仿真结果显示动态性能。
|
3天前
|
存储 传感器 算法
基于ACO蚁群优化算法的WSN网络路由优化matlab仿真
摘要(Markdown格式): - 📈 ACO算法应用于WSN路由优化,MATLAB2022a中实现,动态显示迭代过程,输出最短路径。 - 🐜 算法模拟蚂蚁寻找食物,信息素更新与蚂蚁选择策略确定路径。信息素增量Δτ += α*τ*η,节点吸引力P ∝ τ / d^α。 - 🔁 算法流程:初始化→蚂蚁路径选择→信息素更新→判断结束条件→输出最优路由。优化WSN能量消耗,降低传输成本。
|
2月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度