Convert s in j*ω in a transfer function

Hi, in this code I want to replace the variable s with the complex j*ω
syms s;
m=100;
k=20;
c=0;
A=[m*s^2+c*s+k -s*c-k 0; -k-s*c m*s^2+s*2*c+2*k -s*c-k;0 -s*c-k m*s^2+s*c+k]
det=det(A);
AI=inv(A)
for i = 1:3
for j = 1:3
[nf,df] = numden(AI(i,j));
tfn = sym2poly(nf);
tfd = sym2poly(df);
sys(i,j) = tf(tfn,tfd);
end
end
AI is the stiffness matrix of a MDOF system in mechanics of vibration and I want to plot the displacement behaviour of the masses.
Thanks

2 Comments

Replace s with j*w at what part of the process? It's straightforward to do that substitution in AI, but then sys will be incorrect? Or do you want to just evaluate sys at s = j*w? Or perhaps you want to do something else?
I want to evaluate sys(i,j) at s=j*w, but I don't know how to change s in a tf.

Sign in to comment.

 Accepted Answer

No need to change anything in sys. It is a tf object and either freqresp() or bode() can evaluate sys at s = j*w
doc freqresp
doc bode

2 Comments

Thanks. But how can I plot my freqresp?
bode without output arguments will make the plots for you. The magnitude and/or phase of the output of freqresp can be plotted vs w, typically using semilog
doc abs
doc angle
doc semilog

Sign in to comment.

More Answers (0)

Asked:

on 20 Mar 2021

Commented:

on 22 Mar 2021

Community Treasure Hunt

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

Start Hunting!