Given an LTI system with corresponding transfer matrix K(s), is there an easy way to specify K(w) where w=s+delta?

4 visualizzazioni (ultimi 30 giorni)
I wanted to use the method in this paper here:
and to do so I need to shift the complex "s" argument for the transfer matrix K(s) by some constant real delta, such that for w=s+delta I need to be able to specify K(w).
Is there an easy way to do this? I currently have K(s) as a state space system.
  2 Commenti
Vinh
Vinh il 24 Gen 2024
Modificato: Vinh il 24 Gen 2024
Oh I think I will try to use "num" and "den" for every element of K(s) calculated with tf(K), and then I will just take these coefficients and multiply them by a "s+delta" rather than an s. I will repost if this works, although I am still hoping for a nicer solution.
Vinh
Vinh il 24 Gen 2024
Modificato: Vinh il 24 Gen 2024
Oh I think I have am being stupid. For K=ss(A,B,C,D) and looking at
K(s)=C(s*1-A)^-1*B+D
I think I can just consider
K(w)=C((s+delta)*1-A)^-1*B+D
which is equivalent to
K(w)=C(s*1-A_tilde)^-1*B+D
where
A_tilde=-delta*1+A
so I am hoping I can just perturb this A matrix like this to get a shifted system. Also, sorry for the sloppy notation, I guess I should specify K(w) is actually a transformed K(s) and is not equal to it obviously.

Accedi per commentare.

Risposta accettata

Vinh
Vinh il 24 Gen 2024
I think both comments are valid, but the first one didn't work and the second one seemed to answer my question I think. Please correct me if I am wrong, but just to specify the answer again I just perturbed the A matrix of K by adding -delta*1.

Più risposte (1)

Paul
Paul il 25 Gen 2024
Hi Vinh,
I think the substitution backward.
It should go like this:
K(s) = C * inv(s*I - A) * B + D
w = s + delta -> s = w - delta
K(w) = C * inv((w - delta)*I - A) * B + D
K(w) = C * inv(wI - delta*I - A) * B + D
K(w) = C * inv(wI - (delta*I + A)) * B + D
therefore A_tilde = A + delta*I
Check
s_sys = rss(3,3,3);
delta = 3.1;
A_tilde = s_sys.A + delta*eye(3);
w_sys = s_sys;
w_sys.A = A_tilde;
s0 = -5 + 1j*4;
w0 = s0 + delta;
evalfr(s_sys,s0) - evalfr(w_sys,w0)
ans =
1.0e-15 * 0.0555 + 0.1665i 0.0278 + 0.0000i 0.0555 - 0.3331i 0.0000 + 0.8882i 0.0000 + 0.1110i 0.2220 - 0.8882i 0.4441 + 0.0000i 0.1110 + 0.0000i -0.6661 + 0.2220i

Categorie

Scopri di più su Characters and Strings in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by