Мне нужно получить доступ к значениям переменных в рабочей области MATLAB типа Simulink.parameter
:
CAL_vars = dsdd('find','/path/CAL','ObjectKind','Variable','Property',{'name' 'Class' 'value' 'CAL'})
%gets ids of variables in data dictionary
i = 10
for i=1:length(CAL_vars)
var_name = dsdd('GetAttribute',CAL_vars(i),'name');
% gets names of variables in data dict
var_eval = eval(var_name); % this works in standalone script and it does exactly
% what I need, but once i put it in the function I need this for, it returns error
if (length(var_eval.Value) ==1)
if (var_eval.Value == true)
var_eval.Value = 1;
elseif (var_eval.Value == false)
var_eval.Value = 0;
else
end
end
% do something with the Value
if (errorCode ~= 0)
fprintf('\nSomething is wrong at %s\n', var_name)
end
end
Проблема возникает из-за того, что структуры созданы Simulink и дают ошибку, когда я пытаюсь вызвать eval(name_of_var): неопределенная функция 'eval' для входных аргументов типа 'Simulink.Parameter'.
Любопытно, что он работает правильно в автономном скрипте, но как только я подключаю его к более крупной функции, он перестает работать и начинает отображать ошибку, говорящую
Error using eval
Undefined function or variable 'name_of_var'.
Функция явно находится в рабочей области.