Problem in creating stimulink for a tranfer function
3 views (last 30 days)
Show older comments
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
0 Comments
Answers (2)
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.
0 Comments
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)
2 Comments
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
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)
impulse(G)
See Also
Categories
Find more on Sources in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!