Problem in creating stimulink for a tranfer function
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (2)
Paul
am 4 Okt. 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 Kommentare
Sam Chak
am 4 Okt. 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 Kommentare
Paul
am 4 Okt. 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
am 5 Okt. 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)
Siehe auch
Kategorien
Mehr zu Continuous finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!