I have a mechanical oscillation system defined by a n x n
matrix with transfer functions tf( ... )
.
W = minreal( [ tf( ... ) ... tf(...) ; ... ; tf( ... ) ... tf(...) ];
In the following picture you can see some selected frequency responses. It shows various irregularites at high frequencies.
As I combine this system in Simulink with other high-order systems, the required step-size has to be extremely low or my system is not stable. The simulation time then is tremendously high, which makes it impossible to validate the general funcionality of my model.
For this reason I'd like to apply a low-pass filter on my fransfer matrix, so I could use bigger steps for a faster simulation time. Is there a way to implement this either in my matlab code or within Simulink?
Finally I would like to adjust the threshold frequency depending on how much time I have and which accuracy is required.
I already did some research for appropriate solvers, without success. Any advice regarding solvers would help me as well.
This is the meager list of toolboxes I have available:
Control System Toolbox Version 9.3 (R2012a)
Simulink Control Design Version 3.5 (R2012a)
System Identification Toolbox Version 8.0 (R2012a)
Thank you in advance!
Edit: picture to illustrate the suggestion of @am304
Bode diagram for reduced system from 18th to 4th order, low-pass in my case not required anymore.
As suggested in the comments, convert your matrix of transfer functions to a state-space system and use the state-space block from Simulink, I suspect it will be more efficient (certainly much more readable if n
is large).
Also, maybe look at reducing the order of your system (n
) (see Model Simplification in the documentation for more details - in particular look for balred
and balreal
)