Hello !
I have a model which has 3 layers : Subsystem => 2 subsystems => 1 Matlab Function block (in each of both parent subsystem).
The input of the Function block can take the value : 1, 2 or 3 .
I have this code :
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'); endelse if Color == 'red' || Color == 'orange' else set_param(get_param(parent, 'parent'),'BackgroundColor','green'); endend
Explanation :
When the block receive 3 the top Subsystem become red, 2 => Orange and 1 => Green
If he is already red he stay red, if he is already orange he can be red but not green.
Error :
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 don't understand why Color is not a string value as it originate from get_param function.
Thanks for help
Best Answer