0
0
SimulinkHow-ToIntermediate · 4 min read

How to Optimize Simulink Model Performance Efficiently

To optimize Simulink model performance, simplify your model by reducing block complexity and using fixed-step solvers. Enable code generation and adjust solver settings like step size to speed up simulation.
📐

Syntax

Key commands and settings to optimize Simulink models include:

  • set_param('model','Solver','FixedStepDiscrete'): Sets the solver to fixed-step discrete for faster simulation.
  • set_param('model','FixedStep','0.01'): Defines the fixed step size.
  • set_param('model','SimulationMode','accelerator'): Runs the model in accelerator mode for speed.
  • rtwbuild('model'): Generates C code from the model for faster execution.
matlab
set_param('model','Solver','FixedStepDiscrete')
set_param('model','FixedStep','0.01')
set_param('model','SimulationMode','accelerator')
rtwbuild('model')
💻

Example

This example shows how to set a fixed-step solver, reduce step size, enable accelerator mode, and generate code to improve simulation speed.

matlab
model = 'simulink';
load_system(model);

% Set fixed-step solver
set_param(model, 'Solver', 'FixedStepDiscrete');
set_param(model, 'FixedStep', '0.01');

% Enable accelerator mode
set_param(model, 'SimulationMode', 'accelerator');

% Run simulation
sim(model);

% Generate code for faster execution
rtwbuild(model);

close_system(model, 0);
Output
Simulation completed successfully. Code generation completed successfully.
⚠️

Common Pitfalls

Common mistakes when optimizing Simulink models include:

  • Using variable-step solvers which slow down simulation.
  • Keeping unnecessary blocks or complex subsystems that increase computation time.
  • Not enabling accelerator or code generation modes.
  • Setting too small step sizes causing longer simulation times without benefit.

Always balance accuracy and speed by choosing appropriate solver settings and simplifying the model.

matlab
%% Wrong approach: variable-step solver and normal mode
set_param('model','Solver','VariableStep')
set_param('model','SimulationMode','normal')
sim('model')

%% Right approach: fixed-step solver and accelerator mode
set_param('model','Solver','FixedStepDiscrete')
set_param('model','SimulationMode','accelerator')
sim('model')
📊

Quick Reference

Optimization TipDescription
Use Fixed-Step SolverSpeeds up simulation by using constant step size
Enable Accelerator ModeCompiles model for faster execution
Simplify ModelRemove unnecessary blocks and reduce complexity
Generate CodeUse code generation for real-time or faster runs
Adjust Step SizeChoose step size balancing speed and accuracy

Key Takeaways

Use fixed-step solvers instead of variable-step for faster simulation.
Enable accelerator mode to compile the model and speed up execution.
Simplify your model by removing unnecessary blocks and subsystems.
Generate code from your model to run simulations faster.
Choose an appropriate step size to balance speed and accuracy.