How do I keep parameter and variable workspace and simulink visibility when running a *.m file from a GUI?
2 次查看(过去 30 天)
显示 更早的评论
I currently have a system that is partitioned into three files.
mySystem.m
setSystemParameters.m
mySystemModel.slx
I run mySystem.m from the command line
>> mySystem
which runs setSystemParameters.m and then launches the simulink model.
135 ...
136 tend = 0.011;
137 setSystemParameters;
138 ...
139 set_param('mySystemModel','StartTime', '0.0096', 'StopTime',string(tend))
140 sim('mySystemModel');
141 % start post processing
142 ...
this all runs fine and the workspace shows all the variable and parametric values and they are passed to the simulink model without issue.
I then created a GUI so the user can select system frequency from a set of radio buttons and a RUN PushButton to run mySystem.m after the desired frequency is selected. The frequency is being passed to mySystem.m properly and the mySystem.m runs when 'RUN' is pressed.
The problem is that the variables no longer apear in the workspace and the simulink nolonger has visibility to the values set in the mySystem.m and setSystemParameters.m files. I get a series of errors similar to:
Error using mySystem (line 140)
Invalid setting in 'mySystemModel/Constant' for parameter 'Value'.
Error using mySystem (line 140)
Error evaluating parameter 'Value' in 'mySystemModel/Constant'
Error using mySystem (line 140)
Undefined function or variable 'DCin'.
'Constant' is a simulink library element with parameter 'Vaule' which is set in setSyetemParameters.m to DC in.
How do I maintain workspace and simulink visibility to the parameters after I launch the mySystem From the GUI?
0 个评论
采纳的回答
David Barry
2016-12-13
编辑:David Barry
2016-12-13
Your variables will now be living in the function workspace of your GUI function. By default, Simulink is looking in the MATLAB base workspace for input data. If you don't want to change your model then one of the easiest solutions (not the only solution) is to assign your variables back in to the MATLAB base workspace by using the assignin command within your GUI code.
https://uk.mathworks.com/help/matlab/ref/assignin.html https://uk.mathworks.com/help/matlab/matlab_prog/base-and-function-workspaces.html
If changing your Simulink model is up for grabs then take a look at Data Dictionaries which are much cleaner and get rid of variables in the base workspace. https://uk.mathworks.com/help/simulink/ug/what-is-a-data-dictionary.html
0 个评论
更多回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Verification, Validation, and Test 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!