Change the value of a state-space block matrix each iteration using set_param

2 views (last 30 days)
I want to write a for loop and each time only one element of the A matrix changes. I can set the A matrix of a state-space block in Simulink using set_param but the value argument only accepts matrices in the form '[a b;c d]'. I wrote this code but I get the error message:'Invalid setting in StateSpace block 'states' for parameter 'A''
i=5;
val = zeros(2,2);
val(1,1)=0;
val(1,2)=1;
val(2,1)=i;
val(2,2)=-2;
set_param('ESO_gui/states','A',val,'B','[1;0]','C','[1 0]','D','[0]')

Accepted Answer

Gillian Rosen
Gillian Rosen on 15 Mar 2017
Hi Rafaella, 
I understand that you would like to set the value of a State-Space block's parameters using 'set_param', but that you are encountering an error when you try to do so. 
As you mentioned, the 'set_param' function expects a string (in ' ' marks) as input for the value of A. You are encountering this error because your current input (the 'val' matrix) is not in string form. To convert 'val' from a matrix to a string, you can use the 'mat2str' function, as shown:
>> valString = mat2str(val)
You can then use this string for your input to 'set_param'. See the documentation for 'mat2str' for more information:

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!