How can I implement an improper transfer function (without delays) in Simulink?

203 views (last 30 days)
I have a system that I would like to model in Simulink. If expressed as a transfer function, it would have an improper form, with more zeros than poles. I do not have any internal delays in the transfer function.
The Transfer Function block from Simulink and the LTI System block from the Control System Toolbox both return errors when I try to use this improper transfer function.

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 11 May 2020
Edited: MathWorks Support Team on 11 May 2020
The ability to implement an improper transfer function (without delays) is not available in the Transfer Function and LTI System blocks.
To work around this issue, you can implement the transfer function using the Derivative and Integrator blocks.
An example/workaround for improper transfer functions (without delays) is as follows:
Consider the following transfer function:
>> num = [4.03*.064*1.06e-5 .064 4.30];
>> den = [.064*1.06e-5 1];
>> tf(num,den)
ans =
2.734e-06 s^2 + 0.064 s + 4.3
-----------------------------
6.784e-07 s + 1
We can do a partial fraction decomposition:
>> [r,p,k] = residue(num,den);
Now the 3 systems can be implemented in Simulink as:
% SYSTEM 1: Implemented as an "LTI System" block
% https://www.mathworks.com/help/control/ref/ltisystem.html
sys1 = tf(r(1),[1,-p(1)]);
% SYSTEM 2: Implemented as a gain and a du/dt block
% https://www.mathworks.com/help/simulink/slref/derivative.html
k(1)*s
% SYSTEM 3: Implemented as a gain block
k(2)
These three systems should be summed in parallel. For instance, a basic setup with a "Step" input may look like:

More Answers (0)

Categories

Find more on General Applications in Help Center and File Exchange

Products


Release

R14SP1

Community Treasure Hunt

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

Start Hunting!