Problem in creating stimulink for a tranfer function

조회 수: 9 (최근 30일)
Sukumar Kishanthan
Sukumar Kishanthan 2022년 10월 4일
댓글: Sam Chak 2022년 10월 5일
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

답변 (2개)

Paul
Paul 2022년 10월 4일
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 2022년 10월 4일
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
Paul
Paul 2022년 10월 4일
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 2022년 10월 5일
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.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Continuous에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by