📄 tdofpz3x3_rlocus.m
字号:
echo off
% tdofpz3x3_rlocus.m plotting locus of poles/zeros of z11 for tdof
% model for range of damping values.
clf;
clear all;
% using Matlab's pzmap function with the "tf" form using num/den
% to define the numerator and denominator terms of the different
% transfer functionx
% assign values for masses, damping, and stiffnesses
m1 = 1;
m2 = 1;
m3 = 1;
k1 = 1;
k2 = 1;
% define vector of damping values for c1 and c2
cvec = [0 .2 .4 .6 .8 1.0 1.1 1.05 1.1 1.15 1.16];
for cnt = 1:length(cvec)
c1 = cvec(cnt);
c2 = cvec(cnt);
% define row vectors of numerator and denominator coefficients
den = [(m1*m2*m3) (m2*m3*c1 + m1*m3*c1 + m1*m2*c2 + m1*m3*c2) ...
(m1*m3*k1 + m1*m3*k2 + m1*m2*k2 + m2*c1*c2 + m3*c1*c2 + ...
m1*c1*c2 + k1*m2*m3) ...
(m3*c1*k2 + m2*c2*k1 + m1*c2*k1 + m1*c1*k2 + m3*c2*k1 + m2*c1*k2) ...
(m1*k1*k2 + m2*k1*k2 + m3*k1*k2) 0 0];
z11num = [(m2*m3) (m3*c1 + m3*c2 + m2*c2) (c1*c2 + m2*k2 + m3*k1 + m3*k2) ...
(c1*k2 + c2*k1) (k1*k2)];
z21num = [(m3*c1) (c1*c2 + m3*k1) (c1*k2 + c2*k1) (k1*k2)];
z31num = [(c1*c2) (c1*k2 + c2*k1) (k1*k2)];
z22num = [(m1*m3) (m1*c2 + m3*c1) (m1*k2 + c1*c2 + m3*k1) ...
(c1*k2 + c2*k1) (k1*k2)];
% use the "tf" function to convert to define "transfer function" systems
sysz11 = tf(z11num,den);
sysz21 = tf(z21num,den);
sysz31 = tf(z31num,den);
sysz22 = tf(z22num,den);
% use the "pzmap" function to map the poles and zeros of each transfer function
[p11,z11] = pzmap(sysz11);
[p21,z21] = pzmap(sysz21);
[p31,z31] = pzmap(sysz31);
[p22,z22] = pzmap(sysz22);
% plot poles and zeros of z11
subplot(1,1,1)
plot(real(p11),imag(p11),'k*')
hold on
plot(real(z11),imag(z11),'ko')
title('Poles and Zeros of z11 for range of damping values c1 and c2')
xlabel('Real')
ylabel('Imag')
axis([-3 1 -2 2])
axis('square')
grid on
end
hold off
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -