I have a simulink/Simscape model, the results are logged in a variable called 'simlog'. I am struggeling to get the rotational speed from the Motor to plot it in a matlab skript.
I started to extract the informationm to a separate varibale called temp:
>> temp=(simlog.Motor_And_Load.PMSM.Permanent_Magnet_Synchronous_Motor.angular_velocity);
>> whos temp
Name Size Bytes Class Attributes
temp 1x1 8 simscape.logging.Node
>> temp
temp =
Node with properties:
id: 'angular_velocity'
savable: 1
exportable: 0
series: [1×1 simscape.logging.Series]
With plot(temp) a new figure opens every time. My goal is to have an array with time and velocity values that I can use in subplots and for further calculations. I tried it with a get but that doesn't work. Can someone please help?
>> test = get(temp, 'angular_velocity');
Path 'angular_velocity' is not a valid path for this node.

3 Kommentare

madhan ravi
madhan ravi am 2 Dez. 2023
Verschoben: madhan ravi am 2 Dez. 2023
I don"t have the toolbox but this should work.
plot(simlog.Motor_And_Load.PMSM.Permanent_Magnet_Synchronous_Motor.angular_velocity.series) % first column is the time and second is the angular velocity
Kai
Kai am 2 Dez. 2023
Verschoben: madhan ravi am 2 Dez. 2023
Thanks for your reply. This is what the plot returns:
ans =
1×1 cell array
{1×1 Figure}
I attached the temp and the 'ans' return from the plot command. It looks like just the figure but not the datapoints are logged. Is that correct?
madhan ravi
madhan ravi am 2 Dez. 2023
Verschoben: madhan ravi am 2 Dez. 2023
Unfortunately I can’t test MAT file either since I don’t have access to computer. But you are right it’s already a figure.

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Githin George
Githin George am 12 Dez. 2023

1 Stimme

Hello,
My understanding is that you would like to store the velocity and time values of a simulation output, for a model containing Simscape blocks.
I’m assuming that the variablesimlog” is the simulation output variable exported to workspace. You can use the following code to obtain the values of angular_velocity and store them in an array.
data = simlog.Motor_And_Load.PMSM.Permanent_Magnet_Synchronous_Motor.angular_velocity.series
angular_velocity = values(data)
% the time variable is already stored in workspace as ‘tout’
You can verify these values by doing a plot of tout vs angular_velocity.
I hope this helps.

1 Kommentar

Kai
Kai am 15 Dez. 2023
Hello,
many thanks for your support. It works almost a I expected it!
But with one exception: The values of 'tout' are from the simulink solver and the data comes from the simscape solver. 'angular_velocity' has a different length than 'tout' But a workaround can be to use for one variable a 'to Workspace' block and extract the time vector for all variables from it.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Gefragt:

Kai
am 2 Dez. 2023

Kommentiert:

Kai
am 15 Dez. 2023

Community Treasure Hunt

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

Start Hunting!

Translated by