How can I parametrize the "To Workspace" block in Simulink?
7 views (last 30 days)
Show older comments
Krishnanand K.R.
on 31 Jul 2014
Edited: Krishnanand K.R.
on 4 Aug 2014
Hi there. I am trying to parametrize the "To Workspace" block in Simulink, but it shows me error. Instead of the default variable name simout , I want to use a name that I can pass from workspace. Ex: eval('HHH') instead of simout , where HHH='some_var' . Then the signal from simulation should be stored in a variable named some_var in the base workspace.
The actual scenario is a bit more complex. I would want to provide variable name through eval('B.Label') , where the field Label of the structure B is initialized in the base workspace as B.Label='some_var' . Otherwise, B could be an internal variable in the mask of the subsystem that contains the "To Workspace" block.
The variable name is never changed during the simulation. Thanks in advance for any helpful suggestions.
These are the inputs I tried instead of the default simout, but they gave error Invalid MATLAB variable name specified in ...
eval('B.Label')
B.Label
0 Comments
Accepted Answer
Christopher Berry
on 4 Aug 2014
Hi Krishnanand,
Since the variable name does not change during the simulation, you can set the output parameter 'VariableName' of the 'To Workspace' block completely from the base workspace like this:
First, you will need to get the system path for the 'To Workspace' block in question. You can do this interactively by selecting that block and then typing:
>> h = gcb;
or you can do this at the cmd prompt by typing:
>> h = find_system(gcs,'Name','To Workspace')
Where 'To Workspace' is the exact name of the block you want to manipulate. If you have more than one 'To Workspace' block, make sure to pick the right one!
Either way, the system path for the block will not change unless you change it, so you will only need to do this once after you create your model.
Then, before you start your simulation, just execute the following lines:
>> B.Label = 'test_struct_name';
>> set_param(h,'VariableName',B.Label);
Then you shoudld be good to go!
2 Comments
More Answers (0)
See Also
Categories
Find more on Choose and Parameterize Blocks in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!