У меня есть модель, которая имеет 3 слоя: Подсистема => 2 подсистемы>> 1 Функциональный блок Matlab (в каждой из обеих родительских подсистем) Вход функционального блока может принимать значение: 1, 2 или 3. У меня есть этот код:
y = u;
coder.extrinsic('set_param','get_param','gcs');
parent = get_param(gcs,'parent');
parent2 = get_param(parent, 'parent');
Color = get_param(parent2, 'BackgroundColor');
if u == 3
set_param(get_param(parent, 'parent'),'BackgroundColor','red');
elseif u == 2
if Color == 'red'
else
set_param(get_param(parent, 'parent'),'BackgroundColor','orange');
end
else
if Color == 'red' || Color == 'orange'
else
set_param(get_param(parent, 'parent'),'BackgroundColor','green');
end
end
Пояснение :
Когда блок получает 3, верхняя подсистема становится красной, 2 => оранжевой и 1 => зеленой
Если он уже красный, он остается красным, если он уже оранжевый, он может быть красным, но не зеленым.
Ошибка : Expected either a logical, char, int, fi, single, or double. Found an mxArray. MxArrays are returned from calls to the MATLAB interpreter and are not supported inside expressions. They may only be used on the right-hand side of assignments and as arguments to extrinsic functions.
I не понимаю, почему Color
не является строковым значением, поскольку оно происходит из функции get_param.
Спасибо за помощь