|  | 
| 下面几种可能性有可能导致仿真运行缓慢: 7 A# m, I4 F5 v& ~0 _' ?9 t
 , v/ j7 }2 X% x4 l& M) N, e* t    模型中有使用 MATLAB Function 模块。此时,每个步长在计算时都要调用 MATLAB 去解释执行。这大大降低了仿真速度,解决方法是尽可能改用 Fcn 模块。
 / ]( i) P" t- `/ D- N' r8 w# a4 S    模型中有以 MATLAB 文件编写的 S 函数。解决方法是将 MATLAB 文件编译为 MEX 文件。此外,如果可能,尽量使用 Simulink 内置的模块代替 S 函数。
 " v! x! _* Y. t1 Q* d    过小的步长或采样时间。在仿真过程中,保持小步长对捕获重要事件非常重要,但同时,步长过小会产生不必要的输出点,并减慢仿真速度。; Q; T9 K0 u% e0 E) n
 maximum step size设置太小。请尝试将该属性设置为auto。& U% [& d1 d# M" {: E
 您可能对精度要求过高。默认的relative tolerance是 0.1%,能满足一般需求。
 6 Q! u% D; M* X* l! l    时间跨度(总仿真时间)可能太长。建议缩短。' N! B0 Y5 m( Q' `0 s
 模型中有使用 Memory 模块。该模块会导致变量阶解算器在每个时间步长计算时,被重置回一阶。
 - k) P3 t$ N. Z    模型中有使用 Extras 库,例如图形、自动调整、频谱分析。
 $ J. S( A( [( z+ W/ Q    模型中有使用 scope 模块,尽管其影响很可能非常小。
 & W5 q5 T) b; Z6 C    代数环,请参考之前发布的更为详细的说明。
 , ?" D& |7 _2 U: N    请不要将白噪声模块接到积分器。对于连续系统,请使用带限制白噪声块。) G: e' K# f7 V# v
 模型的刚度很大,但您使用的是非刚性解算器。请尝试使用ode15s。; G/ \* E% ?: s& S9 X$ V
 过零检测(zero crossing),可能导致模型在某些仿真时刻“卡住”。您可以禁用该检测。更为具体的说明,请在帮助文档中搜索zero crossing。
 ( q3 Y, q. a8 n8 F, W    在 model configuration 中勾选 inline parameters,此时可以将所有参数内置,从而提高速度。
 t- L- O8 q& z+ c+ w  q    使用Simulink自带的加速功能。参考:http://www.mathworks.cn/help/sim ... s-acceleration.html
 # {, R5 [0 Q* O# G    如果模型非常复杂(涉及大量模型引用和子系统),并且涉及大量数据记录,则仿真速度也会受到影响。  D8 W% N, S% K  k5 h# V+ s
 : ^4 W& u( _' _  U
 # E* n- H. f4 z0 a
 此外,仿真速度还受系统,包括处理器、RAM等影响。如果您在仿真期间打开了任何图形示波器或其他可视输出模块,这将降低性能。仿真速度与 CPU 速度成正比。如果在仿真期间存储的变量过大,则影响仿真速度。
 | 
 |