Problem in creating stimulink for a tranfer function

3 views (last 30 days)
I need a trasfer function with below specfication. Can someone help me. The transfer function should have a higher order for numerator than that of the denomentor. But i get the below error can someone help me

Answers (2)

Paul
Paul on 4 Oct 2022
Can't be done.
If the block in question is followed (or preceded) by another block of an LTI system, then you can combine them into a single block. For example, suppose your 2*s block is followed by another Transfer Fcn block of 1/(s+1). Then you could implement a single Transfer Fcn block of 2*s/(s + 1). Depending on the model, there may be other block diagram manipulations that achieve the goal.
Search on Answers, this is not an uncommon question.

Sam Chak
Sam Chak on 4 Oct 2022
You can try this trick, using the Descriptor State-Space block to create the "equivalent" improper (non-causal) transfer function. Whether your Simulink model runs or not, that is another story.
A = diag([1, 1, 0]);
B = [0; 0; 1];
C = [2 0 0];
D = 0;
E = [0 1 0; 0 0 1; 0 0 1];
sys = dss(A, B, C, D, E);
G = tf(sys)
G = 2 s^2 ----- s Continuous-time transfer function.
  2 Comments
Paul
Paul on 4 Oct 2022
Thanks again for pointing out this block. Why did you defie A,B,C,D,E for 2*s^2 / s, instead of just 2*s.
FWIW in 2021b I tried to use this block to implement 2*s and 2*s^2 /s, and both resulted in a Simulink error. Unfortunately, the doc page doesn't really explain what the restrictions are.
Sam Chak
Sam Chak on 5 Oct 2022
Hi @Paul, it was to show OP that it is "possible" to create a system that has an equivalent desired improper transfer function. However, if we attempt to run impulse or step response, it will throw an error as it is a non-causal system.
Hope @Sukumar Kishanthan can clarify if the model of derivative of the input signal u with respect to the time t is needed, . If so, depending on the size of the time steps taken in the simulation, can consider using the Derivative block to obtain the approximation of time derivative of input.
A = diag([1, 1, 0]);
B = [0; 0; 1];
C = [2 0 0];
D = 0;
E = [0 1 0; 0 0 1; 0 0 1];
sys = dss(A, B, C, D, E);
G = tf(sys)
G = 2 s^2 ----- s Continuous-time transfer function.
impulse(G)
Error using DynamicSystem/impulse
Cannot simulate the time response of improper (non-causal) models.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!