24小时热门版块排行榜    

查看: 2087  |  回复: 9

ysjuuplj

银虫 (小有名气)

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

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

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

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的回帖

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的回帖

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的回帖

ysjuuplj

银虫 (小有名气)

送红花一朵
引用回帖:
4楼: Originally posted by nagami at 2014-03-12 21:53:40
按照你的思路,尝试了下,
对你的ODE,时间区间, 初值(0.0,0.0),然后OMEGA=。
解ODE采用比RK方法精度更高的Bulirsch-Stoer方法,均采样1024个时域信号.,对输出的结果直接构造y2。
做实值FFT,然后求最大值。 ...

结果不一样,但还是谢谢你花时间做的
6楼2014-03-13 11:48:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ysjuuplj

银虫 (小有名气)

送红花一朵
引用回帖:
5楼: Originally posted by feixiaolin at 2014-03-13 08:29:22
* 可以求出解析解

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

Y= exp(iz),则Y’= i*exp(iz), Y’’= - exp(iz)
原方程被复化,
- exp(iz) + exp(iz)+0.1* i*exp(iz)+0.2*exp(iz) ...

(Y‘)^3应该是 [iexp(iz)]*[iexp(iz)]*[iexp(iz)]
而不是exp(iz)* exp(-iz)* exp(iz)吧?  怎么会有exp(-iz)呢
另外sin(wt)=[exp(iwt)-exp(-iwt)]/2i  而不等于exp(iwt)
7楼2014-03-13 11:54:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nagami

木虫 (正式写手)

引用回帖:
6楼: Originally posted by ysjuuplj at 2014-03-13 11:48:53
结果不一样,但还是谢谢你花时间做的...

那正确的结果是什么样子的
女靠衣装;男靠金装
8楼2014-03-13 12:02:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ysjuuplj

银虫 (小有名气)

引用回帖:
8楼: Originally posted by nagami at 2014-03-13 12:02:47
那正确的结果是什么样子的...

正确结果就是1楼图中大圆点那条线,我不会C++ ,只会点matlab
9楼2014-03-13 14:11:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

引用回帖:
7楼: Originally posted by ysjuuplj at 2014-03-13 11:54:04
(Y‘)^3应该是 **
而不是exp(iz)* exp(-iz)* exp(iz)吧?  怎么会有exp(-iz)呢
另外sin(wt)=/2i  而不等于exp(iwt)...

(Y‘)^3<>Re{ [iexp(iz)]*[iexp(iz)]*[iexp(iz)] }
应该是  sin(wt)=Re[-i*exp(iwt)]
InvRe[y] 代表复数化y;所谓的相量分析
Y= exp(iz),则Y’= i*exp(iz), Y’’= - exp(iz),InvRe[sin(Ohmiga*t)]= -i*exp(i*Ohmiga*t)
原方程被复化,
- exp(iz) + exp(iz)+0.1* i*exp(iz)+0.2*exp(iz)* exp(-iz)* exp(iz)=-i*exp(i*Ohmiga*t)
0.1* i*exp(iz)+0.2*exp(-2y)* exp(iz)= -i*exp(i*Ohmiga*t)
0.1* i*exp(ix-y)+0.2*exp(-2y)* exp(ix-y)= -i*exp(i*Ohmiga*t)
0.1* exp(i(*x+pi/2)-y)+0.2* exp(ix-3y)= -i*exp(i*Ohmiga*t)
0.1* exp(-y)*exp(i(*x+pi/2))+0.2*exp(-3y)* exp(ix)=exp(i*(Ohmiga*t-pi/2))
取 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-pi/2))
[-a*sin(x)+b*cos(x)] + i*[a*cos(x)+b*sin(x)]= exp(i*(Ohmiga*t-pi/2))
推出
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)] =-ctan(Ohmiga*t)
[a+b*tan(x)]/ [-a*tan(x)+b] =-ctan(Ohmiga*t)
tan(x)= [b* ctan(Ohmiga*t)+a]/ [a* ctan(Ohmiga*t)-b]

最后,y(t)= Re[Y]=exp(-y)cos(x)=1.70162*cos(x)
=1.70162/sqrt{1+[b* ctan(Ohmiga*t)+a]^2/ [a* ctan(Ohmiga*t)-b]^2}

[ Last edited by feixiaolin on 2014-3-14 at 09:39 ]
10楼2014-03-13 14:27:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 ysjuuplj 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 什么时候开奖? +9 CrisMessi 2026-08-18 10/500 2026-08-23 12:03 by 丶昵称占用
[基金申请] 2026国自然函评费到账 +15 羊腰板 2026-08-21 16/800 2026-08-23 10:45 by process2012
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 2JOx3r2CYEgw 2026-08-21 9/450 2026-08-23 10:44 by IXZuIJ2Q7OVy
[基金申请] 让我中一个面上吧! +12 大萍1987 2026-08-20 14/700 2026-08-23 10:30 by wrm
[基金申请] 今天放榜吗? +15 布布和一二 2026-08-19 16/800 2026-08-23 09:55 by 张春生
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 DpSrDtM079iu 2026-08-22 5/250 2026-08-23 04:07 by OEbVnUOu01ol
[论文投稿] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 2JOx3r2CYEgw 2026-08-22 4/200 2026-08-23 04:04 by OEbVnUOu01ol
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 2JOx3r2CYEgw 2026-08-22 7/350 2026-08-23 03:55 by OEbVnUOu01ol
[论文投稿] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 2JOx3r2CYEgw 2026-08-22 5/250 2026-08-23 03:52 by OEbVnUOu01ol
[考博] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 DpSrDtM079iu 2026-08-22 3/150 2026-08-23 00:55 by OEbVnUOu01ol
[基金申请] 93BebMhtakh前后11位开头都是大写 +7 且听虎啸 2026-08-17 8/400 2026-08-22 21:55 by 医学老男孩
[教师之家] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +4 2JOx3r2CYEgw 2026-08-21 4/200 2026-08-22 16:52 by sunzitan
[基金申请] 时间戳今天,20号变了 +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[基金申请] 放榜前的不淡定 40+4 snowwithsea 2026-08-19 14/700 2026-08-21 23:51 by cratir
[基金申请] 科研孤儿太难了 +17 我4大白菜 2026-08-20 18/900 2026-08-21 20:57 by zhangev
[基金申请] 看来今天不会放榜了? +8 chengyan1220 2026-08-21 11/550 2026-08-21 17:52 by dcqxinyang
[基金申请] 时间戳又变了 +13 wuchongjun 2026-08-20 19/950 2026-08-21 17:21 by 紫杉醇
[论文投稿] 投稿咨询 +5 wwm09 2026-08-17 7/350 2026-08-21 10:11 by 期刊论文帮手
[基金申请] 时间戳变了,能看出什么问题? +18 基诺咪客 2026-08-17 23/1150 2026-08-20 17:19 by Godzela
[基金申请] 重要消息,中午系统在维护 +11 yuleib84 2026-08-18 12/600 2026-08-20 11:09 by xskun
信息提示
请填处理意见