声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2746|回复: 12

[非线性振动] 求助:在matlab中怎样用fft求非线性方程数值解后的频谱特性?

[复制链接]
发表于 2007-4-2 15:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
:@( 向大家请教:
一个非线性系统,振动方程是达芬方程D2x+uDx+w^2*x+a*x^3=f(wt)
用龙格-库塔法求解它的数值解后,在画出它的频谱特性,fft可以用吗?
数值求解之后得到的x是一系列的数值,fft可以对这个数值向量进行频谱变换吗?

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2007-4-3 08:19 | 显示全部楼层
这是一个朋友传给我的,不知道对你有用不,我打算学matlab,还没开始呢,呵呵


%    This demonstration uses the FFT function to analyze the variations of
%    the EI.centro seismic wave
load EL.dat
time=EL(:,1);
acceler=EL(:,2);
figure(1)
subplot(1,2,1)
plot(time,acceler,'k')
xlabel('t/s')
ylabel('acceleration')
t=time(1:400);
a=acceler(1:400);
subplot(1,2,2)
plot(t,a,'b.-');
figure(2)
f=0:0.125:25-0.125;
Y=fft(a);
Y=Y(1:200);
plot(f,Y,'r')
 楼主| 发表于 2007-4-3 15:09 | 显示全部楼层
还没问你这段程序是干什么用的?
发表于 2007-4-3 20:43 | 显示全部楼层
原帖由 yannanr 于 2007-4-3 15:09 发表
还没问你这段程序是干什么用的?


从程序上看,这段代码就是对已知数据作FFT分析的
发表于 2007-4-6 15:29 | 显示全部楼层
ff=90; %(Hz)
N=1024*16;
n=4; % how many period

grid=[0:N-1]';
incre= 1/ff/(N-1);
t = incre*grid*n;

% plot the original signal
y=1.75*cos(2*pi*ff*t) + 2.3*sin(4*pi*ff*t);
figure(1);
plot(t,y);
title('Signal');
xlabel('time');
ylabel('signal');

% FFT
Y = fft(y)/N*2;
Pyy = abs(Y);

% plot the FFT
f = 1/incre*grid/n/(length(Pyy)-1);
figure(2);
plot(f(1:N/2),Pyy(1:N/2))
title('Frequency content of y');
xlabel('frequency (Hz)');
ylabel('magnitude (Hz)');

“我们一直都用它,效果还挺好!”

评分

1

查看全部评分

发表于 2007-4-18 20:41 | 显示全部楼层
当然可以了,求解这个微分方程后,得出该非线性系统在时域的响应,再利用matlib中的fft函数即可方便地求出在频域内的响应了。
需要说明的是,如果激励力f(wt)是一个频率一定的激励时,就没有必要如此麻烦了,此时系统的响应频率就是激励频率。
发表于 2007-4-19 17:00 | 显示全部楼层
原帖由 dujunmin 于 2007-4-18 20:41 发表
需要说明的是,如果激励力f(wt)是一个频率一定的激励时,就没有必要如此麻烦了, ...


感觉楼上说的有问题。实际上非线性系统的响应是比较复杂的,即使只有单频激励,但是响应中可能包含多种频率的成分,如各种倍频、分频等。如果系统处于混沌状态频率成分就更多了。因此分析响应时作一作FFT还是必要的。
发表于 2007-4-20 10:43 | 显示全部楼层
问下 Seventy721
你程序中的ff代表?采样频率吗?
还有这段f = 1/incre*grid/n/(length(Pyy)-1);
是不是求频率的固定算法啊?
发表于 2007-4-22 18:03 | 显示全部楼层
本帖最后由 VibInfo 于 2016-5-11 15:53 编辑
原帖由 chuandong418 于 2007-4-20 10:43 发表
问下 Seventy721
你程序中的ff代表?采样频率吗?
还有这段f = 1/incre*grid/n/(length(Pyy)-1);
是不是求频率的固定算法啊?

显然这是求个阶谐波的幅值的
其实这个问题你只需要看一下matlab的帮助就行了
发表于 2007-4-22 18:05 | 显示全部楼层
本帖最后由 VibInfo 于 2016-5-11 15:53 编辑
原帖由 shenyongjun 于 2007-4-19 17:00 发表
感觉楼上说的有问题。实际上非线性系统的响应是比较复杂的,即使只有单频激励,但是响应中可能包含多种频率的成分,如各种倍频、分频等。如果系统处于混沌状态频率成分就更多了。因此分析响应时作一作FFT还 ...

考虑非线性问题的话,确实这种说法有问题

不过个人也有一个疑问,在混沌状态下,用FFT还有意义吗?或者说是否是正确的?
发表于 2007-6-4 04:12 | 显示全部楼层
本帖最后由 VibInfo 于 2016-5-11 15:53 编辑
原帖由 chuandong418 于 2007-4-20 10:44 发表
问下 Seventy721
你程序中的ff代表?采样频率吗?
还有这段f = 1/incre*grid/n/(length(Pyy)-1);
是不是求频率的固定算法啊?


Sorry,好久没来看贴,不知有人提问。这个怪我当初没有解释一下程序。现在补充如下:

这段程序是一个带有示例的fft程序。首先由函数y=1.75*cos(2*pi*ff*t) + 2.3*sin(4*pi*ff*t)产生一个采样信号,包含90Hz和180Hz两个频率成分,然后对这个信号做fft并显示。对结果进行系数变换,使得那两个频率成分的幅值与原信号一致。

ff=90; %(Hz)  例子信号的频率
N=1024*16;   采样点数
n=4;              采样范围(几个周期)
发表于 2007-6-4 04:25 | 显示全部楼层
赞成yejet的问题。

关于非线性问题,我觉得能不能用fft主要看解是否为周期函数。如果是周期的,再复杂也没问题,如果不是周期的,那就改用相图或者Poincaré 图吧。至于混沌,我所知甚少,就不乱发言了。呵呵。
发表于 2007-6-4 10:05 | 显示全部楼层
只是对数值积分的解数据进行FFT变换,不管解的性质是什么,直接用FFT就可以了
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-2 14:37 , Processed in 0.190864 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表