Change variables in the base workspace through a Matlab Function block
32 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi,
I'm trying to change a matrix (of type double) in the base workspace through a Matlab Function block in Simulink. To access the matrix in the base workspace within the Matlab function block, I have set the variable type in the Symbols pane of the Matlab function block to parameter data. Then I change the parameter and assign it to the base workspace with the assignin function, which I found in past solutions for the same problem.
Here is an example of my problem:
function updateBaseWorkspaceVariable(Workplan, TasksToDo)
% Modify the base workspace variable using the parameters
assignin('base', 'myVariable', Workplan + TasksToDo);
end
However when running my code and this example code I get the following error message:
Error:Function 'assignin' not supported for code generation.
Function 'MATLAB Function' (#343.124.176), line 3, column 5:
"assignin('base', 'myVariable', Workplan + TasksToDo)"
Launch diagnostic report.
Since this is a solution already used in past Matlab versions I'm wondering, if it's a problem within the Matlab version that I'm using (23a) or whether there is something I'm missing.
Thanks in advance for your help!
Kind regards
Lisa
0 Kommentare
Akzeptierte Antwort
Jon
am 21 Sep. 2023
Bearbeitet: Jon
am 21 Sep. 2023
I would suggest using the "Interpreted MATLAB Function" block for this purpose. It doesn't need to get compiled. It is under
Simulink>User-Defined Functions in the Library Browser.
In the Parameters field MATLAB function, enter something like myfun(u).
In a directory that is on the MATLAB path, make and save an .m file called myfun(u), that has your code it in it, e.g.
function y = myfun(u)
y = u^2;
assignin('base', 'y',y);
5 Kommentare
Jon
am 2 Okt. 2023
Hi Lisa, if you are all set, please accept an answer so others will know that an answer is available. Thanks
Weitere Antworten (1)
Harald
am 21 Sep. 2023
Hi Lisa,
I would question the workflow of writing to the base workspace every time the block is executed. If you only need to have the variable in the workspace after the simulation, you can use model callbacks.
Best wishes,
Harald
Siehe auch
Kategorien
Mehr zu Naming Conventions finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!