Can I access the Unit of a Simulink.Parameter in a Mask?
6 views (last 30 days)
Show older comments
Hello,
I have a block where I want the unit of the output port to be the same as the Simulink.Parameter (inside a Data Dictionary) that I enter into the mask.
I set the output port unit in the initialization code with:
set_param([gcb '/Out1'], 'Unit', get_param(gcb, 'INPUTPARAM.Unit'));
here INPUTPARAM is the name I assign to the given Parameter in the Mask Dialog and I want to access the Field Unit. Sadly this doesn't work because INPUTPARAM is not the given Parameter but the Value.
So is there a way to access the Unit of the given Simulink.Parameter inside a Data Dictionary in the Mask Workspace?
0 Comments
Accepted Answer
Fangjun Jiang
on 9 Sep 2020
Yes but it is not very elegant.
"INPUTPARAM" is the name of your mask variable. You have to follow that to get the name of the Simulink.Parameter object, e.g. "MyParam". Then you have to evaluate "MyParam" in base workspace or data dictionary to get a copy of the object, then you can have the "unit" property value.
One trick is to use Simulink.data.evalinGlobal(). It works for both base workspace and Simulink Data Dictionary so you don't have to detect it first.
For Simulink Data Dictionary, there is supposed to be a few API that you can use to access the property value more elegantly. But at the end you still have to make a copy of the object. Since R2018b, I have requested the Mathworks to provide/develop API to access object property value directly. I have not checked the recent versions.
1 Comment
More Answers (0)
See Also
Categories
Find more on Author Block Masks in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!