Ошибка Mxarray при использовании set_param в функциональном блоке Simulink - PullRequest
0 голосов
/ 04 марта 2020

У меня есть модель, которая имеет 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.

Спасибо за помощь

1 Ответ

0 голосов
/ 05 марта 2020

Работает с isequal ()

if isequal(Color,'red') || isequal(Color,'orange')
...