Малая скорость моделирования может иметь много причин.
Среди них можно выделить основные:
• Модель содержит блок MATLAB Fcn. При использовании блока MATLAB Fcn в модели Simulink на каждом расчетном шаге обращается к интерпретатору языка MATLAB для выполнения расчетов в данном блоке. Вместо блока MATLAB Fcn , если это возможно, следует использовать блоки Fcn или Math Function.
Модель включает S-функцию, написанную на языке MATLAB. В этом случае также происходит обращение к интерпретатору языка MATLAB на каждом расчетном шаге. Вместо MATLAB S-функции более предпочтительным было бы использование S-функций написанных на языках C или Fortran и откомпилированных в исполняемый машинный код в виде динамической библиотеки.
Модель включает блок памяти Memory. Использование блока памяти заставляет решающие модули с переменным порядком (ode15s и ode113) выполнять снижение порядка до первого на каждом расчетном шаге.
Максимальный размер шага (Max step size) слишком мал. Если этот параметр был изменен, то следует попробовать выполнить моделирование снова, установив этот параметр равным auto.
Задана слишком высокая точность расчетов. Обычно значение абсолютной погрешности (Relative tolerance) заданное равным 0.1% достаточно для большинства расчетов. При слишком малых значениях этого параметра шаг расчета может оказаться также достаточно малым, что приведет к замедлению расчетов.
Задан слишком большой интервал расчета по времени. Как правило, при моделировании динамических систем переходные процессы представляют больший интерес, нежели установившийся режим. По достижении установившегося режима расчет можно прекратить, поскольку далее никаких изменений в состоянии модели не будет. Желательно заранее оценить предполагаемое время расчета исходя из знаний о моделируемом объекте.
Модель может оказаться жесткой, а используемый решатель не предназначен для моделирования жестких систем. Следует попробовать использовать методы ode15s или ode23tb и сравнить время расчета при решении этими методами.
В модели используются блоки, шаг дискретизации которых (Sample time) не является кратным. В этом случае Simulink уменьшает шаг расчета до такого значения, чтобы он был кратен шагу дискретизации каждого блока. Например, если шаг дискретизации одного блок равен 0.5, а другого – 0.7, то Simulink установит максимальное значение шага расчета равное 0.1 .
Модель содержит алгебраический контур. Алгебраические контуры рассчитываются в Simulink с помощью итерационной процедуры на каждом шаге расчета, что замедляет общее время расчета.
Модель имеет блок Random Number, который передает свой выходной сигнал на вход интегратора (блок Integrator). Предпочтительнее использовать блок Band-Limited White Noise block из библиотеки Sources.
Модель включает большое число блоков Scope. Блоки требуют значительного объема памяти для хранения отображаемых данных, что может привести к использованию компьютером виртуальной (дисковой) памяти и существенному замедлению расчетов.