Error using c2d extraction for block initialization
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Adam Keller
el 10 de Jun. de 2015
Respondida: Drew Davis
el 11 de Jun. de 2015
if order == 2
sys1 = tf([1], [1/(omega^2) 1.4142/omega 1]);
d_sys = c2d(sys1,Ts);
x = d_sys.num{1} %%error is here
y = d_sys.den{1} %%error is here
set_param([gcb '/filter_1'], 'SampleTime', 'Ts');
set_param([gcb '/filter_1'],'Numerator', 'x', 'Denominator', 'y')
elseif order == 1
sys1 = tf([1], [1/omega 1]);
d_sys = c2d(sys1,Ts);
x = d_sys.num{1} %%error is here
y = d_sys.den{1} %%error is here
set_param([gcb '/filter_1'], 'SampleTime', 'Ts', 'Numerator','x','Denominator', 'y');
else
fprintf('Error');
end
In my code I am initializing a mask for a block I made. "filter_1" is a discrete time transfer function, and I am trying to set the numerator and denominator parameters. There error I am recieving is:
"Error in 'butter/Subsystem': Initialization commands cannot be evaluated. Caused by: Invalid setting in 'butter/Subsystem/filter_1' for parameter 'Numerator'."
I am just trying to extract the numerator and denominator coefficients from 'd_sys' and use those to intialize my block. Help! Thanks in advance.
0 comentarios
Respuesta aceptada
Drew Davis
el 11 de Jun. de 2015
I am assuming the code you posted lives only in the mask initialization of your block. In that case the variable 'x' and 'y' go out of scope after the block initialization is performed. You can ensure that the variables 'x' and 'y' are put in the base workspace by using the evalin or assignin command inside the mask.
Alternatively, you can set the numerator/denominator to their respective numeric value by performing the following command:
set_param([gcb '/filter_1'],'Numerator', ['[' num2str(x) ']'], 'Denominator', ['[' num2str(y) ']'])
0 comentarios
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!