|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 牛小贱 于 2014-12-17 09:48 编辑
小弟初学Matlab,现在做一个关于模态分析的程序。现在程序基本都写好了,但是不知道如何编写频响函数的程序,希望各位前辈指点一下。
程序如下:
- %二自由度可解耦系统的振动模态
- clc;
- clear;
- m1=1;
- m2=2;
- k1=2;
- k2=4;
- c1=1;
- c2=2;
- x0=[0;1]; %初始位移
- xd0=[0;-1]; %初始速度
- tf=50; %时间
- dt=0.1; %时间间隔
- M=[m1,0;0,m2];
- K=[k1+k2,-k2;-k2,k2];
- C=[c1+c2,-c2;-c2,c2];
- A=[zeros(2,2),eye(2);-M\K,-M\C];
- y0=[x0;xd0];
- for i=1:round(tf/dt)+1 %设定计算点,作循环计算
- t(i)=dt*(i-1);
- y(:,i)=expm(A*t(i))*y0; %循环计算矩阵指数
- end
- figure(2);
- subplot(2,1,1);plot(t,y(1,:));xlabel('Zeit');ylabel('Verschiebung1');grid on
- subplot(2,1,2);plot(t,y(2,:));xlabel('Zeit');ylabel('Verschiebung2');grid on
- [v,w]=vbr_sf(M,K,C)
复制代码 函数程序如下:
- function [v,w]=vbr_sf(m,d,k)
- %vbr_sf vbr_sf(m,d,k)
- % [v,w]=vbr4(m,d,k)
- % function vbr_sf finds the mode shapes and natural frequencies of
- % a linear second order matrix equation.
- % [v,w]=vbr_sf(m,k) finds the mode shapes and natural frequencies
- % for the undamped case.
- if nargin==2
- k=d;
- [v,w]=eig(m\k);
- w=sqrt(w);
- end
- if nargin==3
- if norm(d/m*k-k/m*d) < 1e-8*norm(k/m*d)
- %disp('Damping is proportional, eigenvectors are real.')
- [v,w]=eig(m\k);
- w=sqrt(w);
- else
- %disp('Damping is non-proportional, eigenvectors are complex.')
- a=[0*k eye(length(k));-m\k -m\d];
- [v,w1]=eig(a);
- w=abs(w1);
- end
- end
- w=diag(w);
复制代码
|
|