24小时热门版块排行榜    

查看: 1767  |  回复: 9
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

ysjuuplj

银虫 (小有名气)

[求助] 求问FFT变换是怎么整的? 已有2人参与

我想把一个方程的时域解变换到频域,,我不会编程,求各位编一下图中这个问题简单的FFT程序,不胜感激
求问FFT变换是怎么整的?
1.jpg

[ Last edited by ysjuuplj on 2014-3-10 at 19:15 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nagami

木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
feixiaolin: 金币+50, reward 2014-03-14 08:58:49
按照你的思路,尝试了下,
对你的ODE,时间区间[0,60], 初值(0.0,0.0),然后OMEGA=[0.1:0.01:3]。
解ODE采用比RK方法精度更高的Bulirsch-Stoer方法,均采样1024个时域信号.,对输出的结果直接构造y2。
做实值FFT,然后求最大值。
求出的结果抖动很厉害,这个我也不知道(加大时间区间也是如此)。第一张图是原始数据,第二张是bezier曲线光滑所致。
这是C++写的,gnuplot绘制,Matlab应该更方便,不过我不熟悉Matlab,只能祝好运呵呵。
求问FFT变换是怎么整的?-1
11.png


求问FFT变换是怎么整的?-2
22.png

» 本帖已获得的红花(最新10朵)

女靠衣装;男靠金装
4楼2014-03-12 21:53:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 10 个回答

feixiaolin

荣誉版主 (文坛精英)

优秀版主

2楼2014-03-10 21:38:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ysjuuplj

银虫 (小有名气)

送红花一朵
引用回帖:
2楼: Originally posted by feixiaolin at 2014-03-10 21:38:01
http://www.programfan.com/club/showtxt.asp?id=228343

求问版主,能不能劳驾帮编下这个小程序,我是程序盲,别人帮编过,但是没编出来,编出的结果和图中的曲线对不上,所以来小木虫上寻找热心的好人
3楼2014-03-11 18:40:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
感谢参与,应助指数 +1
ysjuuplj: 金币+100, 虽然看不懂,但还是把分给你吧,我没用FFT,用另一种方法画出来了 2014-03-13 23:17:43
* 可以求出解析解

令 Y=InvRe[y]=exp(iz)= exp(iz),其中z=x(t)+iy(t);
InvRe[y] 代表复数化y

Y= exp(iz),则Y’= i*exp(iz), Y’’= - exp(iz)
原方程被复化,
- exp(iz) + exp(iz)+0.1* i*exp(iz)+0.2*exp(iz)* exp(-iz)* exp(iz)=exp(i*Ohmiga*t)
0.1* i*exp(iz)+0.2*exp(-2y)* exp(iz)=exp(i*Ohmiga*t)
0.1* i*exp(ix-y)+0.2*exp(-2y)* exp(ix-y)=exp(i*Ohmiga*t)
0.1* exp(i(*x+pi/2)-y)+0.2* exp(ix-3y)=exp(i*Ohmiga*t)
0.1* exp(-y)*exp(i(*x+pi/2))+0.2*exp(-3y)* exp(ix)=exp(i*Ohmiga*t)
取 a=0.1* exp(-y),  b=0.2* exp(-3y)
上式变为
a*[cos(x+pi/2)+i*sin(x+pi/2)]+b[cos(x)+i*sin(x)]= exp(i*Ohmiga*t)
[-a*sin(x)+b*cos(x)] + i*[a*cos(x)+b*sin(x)]= exp(i*Ohmiga*t)
推出
1) A^2+b^2=1,
[0.1* exp(-y)]^2 + [0.2* exp(-3y)]^2=1,   
y(t)= -0.531582 = constant
a=0.170262, b=0.985415
2) [a*cos(x)+b*sin(x)]/ [-a*sin(x)+b*cos(x)] =tan(Ohmiga*t)
[a+b*tan(x)]/ [-a*tan(x)+b] =tan(Ohmiga*t)


最后,y(t)= Re[Y]=exp(-y)cos(x)=1.70162*cos(x)

» 本帖已获得的红花(最新10朵)

5楼2014-03-13 08:29:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见