evalin data dictionary design data unable to use parameters on rhs of expression
5 次查看(过去 30 天)
显示 更早的评论
I'm trying to write a MATLAB script that can perform pre-processing computations on a data dictionary prior to Simulink running. I've been trying to write a script that is called from the 'evalin' interface with the Dictionary design data section as the first input and my script as the second:
evalin(section,'my_script');
Assume the dictionary already has parameters x and y with some arbitry values
if my_script.m has:
x=1;
y=2;
There's no problem. If I modify my_script.m to:
y=x+1;
There is an error when calling evalin:
"Could not evaluate 'my_script' in data dictionary
Caused by:
Error occurred."
After further testing, it doesn't seem like I can use an existing parameter anywhere on the rhs of an equation. Is this correct?
0 个评论
采纳的回答
Mohith Kulkarni
2020-8-28
The "evalin" function for data dictionary section does not support the expressions where the value contains data entries as of now. But I have brought this issue to the concerned people and it might be considered in any future release.
更多回答(1 个)
stozaki
2020-8-28
编辑:stozaki
2020-8-28
The "evalin" function for data dictionary section does not support the expressions.
The workaround can be replaced by the following formula.
Simulink.data.evalinGlobal(modenName,expression)
For example, how about preparing a wrapper function like the following?
function [Object] = evalinCustomWrap (modelName,varStr)
modelVar = verLessThan('Simulink','8.5');
if ~modelVar
% If the target model is using a MATLAB release supported by .sldd
try
Object = Simulink.data.evalinGlobal(modelName,varStr);
catch
Object = [];
end
else
% If the target is using a MATLAB release that does not support sldd
% Only evalin can be used
try
Object = evalin('base',varStr);
catch
Object = [];
end
end
end
Regards,
stozaki
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Manage Design Data 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!