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

4 views (last 30 days)
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 Comments
Vinh
Vinh on 24 Jan 2024
Edited: Vinh on 24 Jan 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 on 24 Jan 2024
Edited: Vinh on 24 Jan 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.

Sign in to comment.

Accepted Answer

Vinh
Vinh on 24 Jan 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.

More Answers (1)

Paul
Paul on 25 Jan 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

Categories

Find more on Characters and Strings 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!