How do I export a vector to workspace in simulink?
7 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I'm trying to model a household appliance in simulink. When the simulation ends, I need the model to output a vector to the workspace which contains power loads corresponding to simulation times. I've started with trying to implement as simple a model as I can, shown below.
The idea here is to just send simulation time to a function which appends the simulation time to a vector containing all simulation times. Basically, if the simulation stop time is 10, what I want from this model is AllTimes = [1, 2, 3, ... 10].
I've set the model to run an initialization function, which contains the following:
times = [];
The MATLAB function block contains the following:
function times = fcn(currentTime)
times = [times, currentTime];
times = time;
Simulink complains that:
The issue, as I understand it, is that "time" is declared outside fcn's scope. I've tried the following tweaks to fix this:
function times = fcn(currentTime)
if ~exist('vect')
vect = [];
end
times = currentTime;
function times = fcn(currentTime)
times = evalin('base', [times, currentTime]);
times = currentTime;
function times = fcn(currentTime)
assignin('base', times, [times, currentTime])
times = currentTime;
However, none of these have worked.
I also tried importing the function times from the workspace and passing it as an argument to fcn, like so:
function times = fcn(currentTime, times)
times = [times, currentTime];
times = currentTime;
However, this throws the error:
Unfortunately, I have very limited knowledge of MATLAB and even less knowledge of simulink. If anyone has any advice I would very much appreciate help.
5 Commenti
Jim Riggs
il 28 Giu 2019
Modificato: Jim Riggs
il 28 Giu 2019
Oops. I was assuming that the block in your diagram with the label "Alltimes" was a "to Workspace" block and that you were simply trying to constuct the desired output vector.
In the future, select all of your blocks, then select "Format / Show Block Name" before you capture screenshots.
Risposte (1)
Jim Riggs
il 26 Giu 2019
It'a actually very easy. Simulink has a block for combining two signals, called a "mux" block.
Simply combine the two signals together, like so:
2 Commenti
Jim Riggs
il 26 Giu 2019
Modificato: Jim Riggs
il 26 Giu 2019
The two signals have to be the same type and compatible shape.
You can use a "Data type convert" block to change the type of one signal, and there is a "reshape" block if you need to change the shape.
For more complex shapes (2D or more), you may need to use use a "Vector concatenate" block in place of the Mux.
Vedere anche
Categorie
Scopri di più su Simulink Functions in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!