Recivecing an error "Unable to convert the model to a transfer function because of overflow." when dealing with large state space models
Mostrar comentarios más antiguos
Hello,
I have a state-space (lets called "ss_total") containg A,B,C,D matrices and the dimension of those matrices are around 1000. I need to get the transfer function for each input and output however if use tf(ss_total(1,1)) (for the tf of first input and output) I recieve an error "Unable to convert the model to a transfer function because of overflow." I have tried different functions such as [num,denum]=ss2tf(A,B,C,D) (this case it only calculates until the 60th order and the rest is NaN of INF), sparse matrices however it is not working. I dont want to to model order reduction (pz cancellation and etc.) since I will lose dynamics hence, I would be happy if someone has experience on this topic.
Best regards,
Onur
3 comentarios
Kautuk Raj
el 15 de Feb. de 2024
Please share your exact code/model for better reproduction of the issue.
Paul
el 27 de Feb. de 2024
Representing a system of that size as a tf object is probably infeasible from a numerical represesentation standpoint, except for very special cases. In general, ss objects are preferred over tf anyway. Why is there a need to convert to tf in the first place?
I rarely encounter systems with extremely high orders. Are 1000 states truly physically plausible and interpretable? For instance, a train engine coupled with 999 compartment coaches. In this case, I am simply testing whether any errors occur when modeling a Transfer Function of the 1000th order.
n = 1000;
A = magic(n);
B = [zeros(n-1, 1); 1];
C = [1, zeros(1, n-1)];
D = 0*C*B;
sys = ss(A, B, C, D);
G = tf(sys)
p = pole(G);
size(p)
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Model Type and Other Transformations en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!