|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
刚接触非线性振动不久,就试着用matlab求解一个Duffing方程,结果在幅频曲线上没有出现跳跃现象,是怎么回事?
matlab程序:
Duffing.m
function dy = Duffing( t,y )
dy=zeros(2,1);
dy(1)=y(2);
%f=0.35*cos(2*pi*0.1*t);
f=0;
dy(2)=f-(0.2*y(2)+y(1)+0.5*y(1)^3);
end
Duffing_simulation.m
clear;
clc;
[T,Y]=ode45('Duffing',[0,50],[0 1]);
H1=figure;
%相图
plot(Y(:,1),Y(:,2));
grid;
figure;
%动态响应图
plot(T,Y(:,1));
grid;
figure;
%快速傅立叶变换
fs=30;
N=1024;
YY=fft(Y(:,1),N);
mag=abs(YY)*2/N;
mag(1)=mag(1)/2;
f=(0:(N/2))'*fs/N;
mag=mag(1:N/2+1);
%幅频特性曲线
stem(f,mag)
grid;
%相频特性曲线
for i=1:(N/2+1)
Theta(i)=angle(YY(i));
Theta(i)=Theta(i)*180/pi;
end
figure;
plot(f,Theta)
grid;
是程序哪块出现错误了?还是什么别的问题?求助,谢谢 |
|