Trouble with inverse laplace operation

2 Ansichten (letzte 30 Tage)
Deepayan Bhadra
Deepayan Bhadra am 18 Dez. 2017
Kommentiert: Star Strider am 18 Dez. 2017
I'm trying to run a code like this:
s = tf('s')
sys = exp(-0.1*s);
sysx = pade(sys,3);
x0 = randn(10,1);
L = D-A (A,D,L are constant matrices)
H = 1/(s+L*sysx);
K = H*x0;
ilaplace(K)
Essentially, I want to get a vector x(t) in the end as per the equation xdot = -Lx(t-0.1).
But this returns the error: Undefined function 'ilaplace' for input arguments of type 'tf'.
How do I go about this? Thanks a lot.

Akzeptierte Antwort

Star Strider
Star Strider am 18 Dez. 2017
You go about it with difficulty, because the Control System Toolbox and Symbolic Math Toolbox do not have any way of communicating with each other without your intervention.
Try this:
s = tf('s');
sys = exp(-0.1*s)
sysx = pade(sys,3)
sysxn = sysx.Numerator;
sysxd = sysx.Denominator;
x0 = randn(10,1);
syms A D L s t
L = D-A; % (A,D,L are constant matrices)
Nsysx = poly2sym(sysxn{:}, s);
Dsysx = poly2sym(sysxd{:}, s);
TFsysx = Nsysx / Dsysx;
H = 1/(s+L*TFsysx);
K = H*x0;
kh(t) = ilaplace(K, s, t);
kh(t) = vpa(kh(t), 5)
The result are a (10x1) symbolic function vector in ‘t’, ‘z’, and ‘s4’ that I will leave it to you to untangle.
Personally, I would not involve the Symbolic Math Toolbox at all, and instead evaluate the system with step, impulse, or lsim, and be happy with the result.
  4 Kommentare
Deepayan Bhadra
Deepayan Bhadra am 18 Dez. 2017
I understand. I stuck to the Control System Toolbox and used this instead:
s = tf('s')
sys = exp(-0.1*s);
sysx = pade(sys,3);
x0 = randn(10,1);
D = diag([2 3 4 4 4 4 4 4 3 2]);
A = [0 1 1 0 0 0 0 0 0 0;1 0 1 1 0 0 0 0 0 0;1 1 0 1 1 0 0 0 0 0;0 1 1 0 1 1 0 0 0 0;0 0 1 1 0 1 1 0 0 0;0 0 0 1 1 0 1 1 0 0;0 0 0 0 1 1 0 1 1 0;0 0 0 0 0 1 1 0 1 1;0 0 0 0 0 0 1 1 0 1;0 0 0 0 0 0 0 1 1 0];
L = D-A;
H = 1/(s+L*sysx);
K = H*x0;
[y,t] = impulse(K)
The output y is null (K seems to have blown up) Somehow, this doesn't add up. I'm wondering what went wrong now.
Star Strider
Star Strider am 18 Dez. 2017
If you do:
K = H*x0;
Num = K.Numerator
Den = K.Denominator
you will see the problem. I have no suggestions as to how to solve it.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by