📄 v2_091.m
字号:
% v2_091.m
%
% This is a script file to solve a 4 DOF system
% given the mass, damping and stiffness matrices
% in dimensionless units and plot any desired
% frequency response function.
%**********************************************************************
% Author: Randall J. Allemang
% Date: 18-Apr-94
% Structural Dynamics Research Lab
% University of Cincinnati
% Cincinnati, Ohio 45221-0072
% TEL: 513-556-2725
% FAX: 513-556-3390
% E-MAIL: randy.allemang@uc.edu
%*********************************************************************
%
clear,clg
pi=3.14159265;
plt=input('Store plots to file (Yes=1): (0)');if isempty(plt),plt=0;end;
mass=[1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1];
stiff=[5,-2,0,0;-2,3,-1,0;0,-1,5,-4;0,0,-4,9];
damp=[3,-1,0,0;-1,1.1,-0.1,0;0,-0.1,3.1,-3.0;0,0,-3.0,5.0];
null=[0,0,0,0;0,0,0,0;0,0,0,0;0,0,0,0];
% Form 2N x 2N state space equation.
a=[null,mass;mass,damp];
b=[-mass,null;null,stiff];
[x,d]=eig(b,-a);
% Sort Modal Frequencies
orig_lambda=diag(d);
[Y,I]=sort(imag(orig_lambda));
lambda=orig_lambda(I);
xx=x(:,I);
% Normalize x matrix to real vectors if possible
for ii=1:8
xx(1:8,ii)=xx(1:8,ii)./xx(5,ii);
end
% Compute 'modal a' and 'modal b' matrix
ma=xx.'*a*xx;
mb=xx.'*b*xx;
% Extract modal vectors from state-space formulation
psi(1:4,1)=xx(5:8,1);
psi(1:4,2)=xx(5:8,2);
psi(1:4,3)=xx(5:8,3);
psi(1:4,4)=xx(5:8,4);
psi(1:4,5)=xx(5:8,5);
psi(1:4,6)=xx(5:8,6);
psi(1:4,7)=xx(5:8,7);
psi(1:4,8)=xx(5:8,8);
lambda
xxx=input('Hit any key to continue');
psi
xxx=input('Hit any key to continue');
ma
xxx=input('Hit any key to continue');
% Calculate residue matrices
A1=psi(1:4,1)*psi(1:4,1).'./ma(1,1);
A2=psi(1:4,2)*psi(1:4,2).'./ma(2,2);
A3=psi(1:4,3)*psi(1:4,3).'./ma(3,3);
A4=psi(1:4,4)*psi(1:4,4).'./ma(4,4);
A5=psi(1:4,5)*psi(1:4,5).'./ma(5,5);
A6=psi(1:4,6)*psi(1:4,6).'./ma(6,6);
A7=psi(1:4,7)*psi(1:4,7).'./ma(7,7);
A8=psi(1:4,8)*psi(1:4,8).'./ma(8,8);
resp=input('Enter response (row) DOF: (1)');if isempty(resp),resp=1;end
inp=input('Enter input (column) DOF: (1)');if isempty(inp),inp=1;end
residu(1) = A1(resp,inp);
residu(2) = A2(resp,inp);
residu(3) = A3(resp,inp);
residu(4) = A4(resp,inp);
residu(5) = A5(resp,inp);
residu(6) = A6(resp,inp);
residu(7) = A7(resp,inp);
residu(8) = A8(resp,inp);
% Calculate desired plots
om=linspace(0,100,501);
H1=residu(1)./(j.*om-lambda(1));
H2=residu(2)./(j.*om-lambda(2));
H3=residu(3)./(j.*om-lambda(3));
H4=residu(4)./(j.*om-lambda(4));
H5=residu(5)./(j.*om-lambda(5));
H6=residu(6)./(j.*om-lambda(6));
H7=residu(7)./(j.*om-lambda(7));
H8=residu(8)./(j.*om-lambda(8));
H=H1+H2+H3+H4+H5+H6+H7+H8;
om(151),H(151)
om(251),H(251)
xxx=input('Hit any key to continue');
subplot(211),semilogy(om,abs(H),om(151),abs(H(151)),'*',om(251),abs(H(251)),'*')
xlabel('Frequency (Rad/Sec)'),ylabel('Magnitude'),grid
subplot(212),plot(om,angle(H),om(151),angle(H(151)),'*',om(251),angle(H(251)),'*')
xlabel('Frequency (Rad/Sec)'),ylabel('Phase'),grid
title(['FRF Input: ',num2str(inp),' Response: ',num2str(resp)])
pause
if plt==1,print -f1 -deps v2_091a,end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -