Running Simulink Simscape model with a vector from MATLAB script as values

1 view (last 30 days)
Hello,
I am running the following MATLAB scipt, which calls a Simulink model:
N = 1000; % Perform N iterations
for i = 1:1:N
Res = 2 + 0.5*rand; % Res between 2 and 2.5 %[Ohm]
out = sim('motor_model','simulationmode','normal');
Mes = stepinfo(out.RotationSpeed, out.tout); % Step responce to input voltage
SimSteadySpeed(i) = Mes.SettlingMax;
SimSettleTime(i) = Mes.SettlingTime;
end
The simulink model represents a simple DC motor using simscape components:
The value of the resistance in 'Resistor' is defined as Res, so each time the simulink simulation is called it defines a different value to resistance:
Unfortinitly, this method is Very time consuming. I tried using 'Accelerator' and 'Rapid-Accelerator' modes, but they seem to take even longer overall (I assume MATLAB is rebuilding them every run becuase of the change is Res)
I tried using parfor, but that just got my computer stuck while 'loading the pool' or somthing like that.
Any ideas how i can run this more efficiently?
Thanks!

Accepted Answer

Manoj Mirge
Manoj Mirge on 17 Aug 2023
Edited: Manoj Mirge on 17 Aug 2023
The workflow mentioned can also be achieved by the parameter sweeping of the model. The parameter sweeping includes changing the block parameter values between simulation runs and comparing and analyzing the output signal data from each run.
Please refer to the below attached link to read more about the parameter sweeping:
The parameter sweeping can be optimized by running multiple simulations in parallel. This can be achieved using the “parsim” command.
Please refer to the below attached link to read more about “parsim” and how to achieve the faster parameter sweeping using “parsim”:
Hope this helps.

More Answers (0)

Products


Release

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!