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就是时间差。
相关推荐
我找到地球的支点啦5 小时前
Matlab系列(009) 一CRC循环冗余校验详解
开发语言·数据结构·算法·matlab·信息与通信
吃好睡好便好3 天前
查找函数的使用
学习·算法·matlab·生活·查找函数
chhttty3 天前
Design Verifier检查:整型数溢出检查与修复
matlab·simulink
吃好睡好便好4 天前
判断函数的使用
学习·算法·matlab·生活·判断函数
hu9245195594 天前
Matlab保护源代码—P文件和exe文件详细解析
开发语言·matlab
史上最甜的躯4 天前
控制系统——基础、导论;以直流电机控制系统为例详解微分方程模型、拉普拉斯变换、传递函数模型的理论、推导及仿真
matlab·simulink·传递函数·控制系统·拉普拉斯·电机模型
lingchen19065 天前
用MATLAB r2010b和r2016b求解微分方程组
开发语言·算法·matlab
可编程芯片开发5 天前
基于李雅普诺夫算法的四旋翼无人机姿态跟踪控制系统simulink建模与仿真
matlab·无人机·制造·四旋翼无人机·李雅普诺夫·姿态跟踪控制
matlab代码6 天前
基于matlab的玉米种子计数设计(GUI界面)【源码58期】
开发语言·matlab
吃好睡好便好7 天前
转换函数的使用
学习·matlab·生活·转换函数