3

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.

Bode diagram of oscillation system

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

Bode diagram for reduced system from 18th to 4th order, low-pass in my case not required anymore.

Robert Seifert
  • 25,078
  • 11
  • 68
  • 113
  • 1
    It sounds like you are using a fixed-step solver. I assume your transfer functions are continuous. I would use a variable-step solver, as this will allow the simulation to take larger time steps when it can. `ode45` is the default, but if your system is stiff, use `ode15s` or `ode23t`. – am304 Sep 03 '13 at 15:00
  • My system is stiff. The tolerances I have to define for `ode15s` or `ode23t` for a stable system are to tight to decrease my simulation time noticeable. Furthermore the model has to interact with a coupled FE-analysis, which is working with fixed steps. So I try to avaid variable step-sizes, but in the worst case I could solve this problem by editing the interface. – Robert Seifert Sep 03 '13 at 15:07
  • Other suggestions: 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 http://www.mathworks.co.uk/help/control/model-simplification-1.html for more details). – am304 Sep 03 '13 at 15:09
  • @am304 your suggestion to reduce the order of my system seems to work perfectly for me as my high frequent magnitudes are very small anyway. So I would appreciate if you post it as an answer. BUT, for answering the general case of my question, still there could be need for a low-pass filter. I added a picture which illustrates, that the damping of high frequencies is propably not sufficient in any case. – Robert Seifert Sep 03 '13 at 15:57
  • @am304 the use of `balred` caused a speedup of 35% the combination of `balred` and `balreal` (transformation to state space) finally got me a speed up of 83%. Thank you very much! – Robert Seifert Sep 03 '13 at 16:11

1 Answers1

1

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)

am304
  • 13,758
  • 2
  • 22
  • 40