Matlab-Simulink之步长

一、步长定义和概念

  1. 步长(Simulation Step Size)
    步长是 Simulink 求解器在仿真过程中更新系统状态的时间间隔,即相邻两次计算系统输出或状态的时间差。它决定了仿真的 "精细度",分为两种类型:
  2. 固定步长(Fixed Step Size):求解器始终以预设的固定间隔(如 0.1 秒)更新系统,步长值保持不变。离散系统一般使用固定步长。
  3. 可变步长(Variable Step
    Size):求解器根据系统动态特性自动调整步长(如系统快速变化时用小步长,平缓时用大步长),步长值随仿真过程动态变化。

二、步长对仿真精度和效率的影响

  1. 步长越小:仿真结果越精细(接近真实系统),但总步数增加,计算量增大,实际执行时间(电脑计算该仿真的物理时间)变长。
  2. 步长越大:效率越高(计算快),但可能丢失系统高频动态(如快速振荡),甚至因步长过大导致数值不稳定(如刚性系统)。

三、子系统与仿真步长的关系

  1. 执行优先级不同
    步长:所有模块(包括使能子系统、触发子系统、周期性子系统)的状态更新都依赖于步长。即使使能子系统不执行,其他模块仍会在每个步长计算。
  2. 子系统:仅在使能信号有效时执行内部计算,否则跳过(但外部信号仍会按步长更新)。步长决定周期性子系统多少个步长触发,子系统之后在触发后才会执行内部的逻辑,按照顺序计算一遍之后输出,否则保持上一输出值。
  3. 例如,当步长(0.5ms)时,使能周期(10ms)时,二十个步长才能使能一次子系统,如果子系统内部都是离散的模块,那么只有在子系统使能后才计算逻辑。

四、子系统内部的采样时间

  1. 子系统的执行模式取决于其采样时间设置;
  2. 继承模式(Inherited) 子系统继承上级模块的采样时间,若未明确指定,则默认与仿真步长一致(可能是固定步长或可变步长)。
  3. 固定采样时间(如 0.1 秒) 子系统按指定周期执行,此时它成为周期子系统。
  4. 整个模型(包括 Function-Call Subsystem 的输入信号)仍按全局步长更新状态,但子系统仅在被调用时执行一次内部计算。
  5. 假如调用周期(10ms)
    每 10ms 触发一次调用时,子系统内部的所有模块会按顺序执行一次,并输出结果。两次调用之间,子系统内部状态保持不变(除非包含连续状态,如积分器)。
    子系统内部模块的采样时间需根据需求单独设置:
    连续模块(如积分器):默认按全局步长更新状态。
    离散模块:需显式设置采样时间(如 0.01 秒),且应与调用周期兼容(通常为整数倍关系)。
    如10ms周期执行的子系统,离散模块的采样时间都是设置的继承,那这些模块的采样时间就是10ms,在离散系统中这个更新周期就是10ms,关系如下
    在离散系统中:
    采样时间=步长=更新周期=△t
    在离散PID控制中△t就是时间差。
相关推荐
yugi9878381 小时前
基于M序列的直扩信号扩频码生成方法及周期长码直扩信号的MATLAB实现方案
开发语言·matlab
ytttr8731 小时前
matlab进行利用遗传算法对天线阵列进行优化
开发语言·算法·matlab
啊阿狸不会拉杆2 小时前
《数字图像处理》第 5 章-图像复原与重建
图像处理·人工智能·算法·matlab·数字图像处理
春日见2 小时前
如何跑通,吃透一个开源项目?
linux·运维·开发语言·数码相机·matlab
技术净胜2 小时前
MATLAB数据清洗流程包含:缺失值处理/异常值检测/重复值删除
开发语言·matlab
cici158743 小时前
MATLAB全景拼接完整实现方案
图像处理·计算机视觉·matlab
kaikaile19954 小时前
雷达仿真中时域与频域脉冲压缩的对比 MATLAB实现
开发语言·matlab
listhi5204 小时前
MATLAB中实现用于控制、优化等自动化领域的模糊神经网络
神经网络·matlab·自动化
崇山峻岭之间4 小时前
Matlab学习记录06
前端·学习·matlab
IT猿手4 小时前
基于粒子群算法与动态窗口混合的无人机三维动态避障路径规划研究,MATLAB代码
算法·matlab·无人机·多目标优化算法·多目标算法