搜索
查看: 5112|回复: 13

关于FFT的问题 !! 飞狐制作者赶快来看一看啊!

[复制链接]
发表于 2003-5-24 16:29 | 显示全部楼层

关于FFT的问题 !! 飞狐制作者赶快来看一看啊!

来自:MACD论坛(bbs.shudaoyoufang.com) 作者:eagle 浏览:5112 回复:13

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

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
这2天我看了一下FFT这个函数,有一点我很奇怪,如果有129根日线
,为什么Fourier transform之后(这样调用: fft(close, 0) )的频谱有128根 ? 照例来说应该只有采样频率(sampling frequency)的一半,即应该只有64根才对啊!另外,频谱当中的常数值(即频率为0的值)是不是被去掉了?
我在matlab里面用fft算了一下,但是结果和飞狐里面算出来的频谱结果不相同, 请问是什么原因啊? 非常感谢飞狐制作者能够解释一下。

[ Last edited by eagle on 2003-5-24 at 22:47 ]
金币:
奖励:
热心:
注册时间:
2001-10-30

回复 使用道具 举报

发表于 2003-5-24 18:20 | 显示全部楼层
好问题,我也有这个疑问,定一下
金币:
奖励:
热心:
注册时间:
2003-5-3

回复 使用道具 举报

发表于 2003-5-25 00:08 | 显示全部楼层
这个就复杂了,fft的算法比较多,但如果飞狐的不对,则反变换不回去,实际上飞狐可以反变换回去,所以飞狐的算法也应该是对的
金币:
奖励:
热心:
注册时间:
2001-11-27

回复 使用道具 举报

 楼主| 发表于 2003-5-25 13:46 | 显示全部楼层
不管是直接使用DFT还是FFT,只要取样一样, Fourier Transform都只能有一个结果啊.
请教一下南客先生, 您的取样个数在日线数不是2的整数次幂的时侯,是否采用在末尾加0的方法呢?
金币:
奖励:
热心:
注册时间:
2001-10-30

回复 使用道具 举报

发表于 2003-5-25 23:32 | 显示全部楼层

复数序列的快速富里叶变换

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
金币:
奖励:
热心:
注册时间:
2002-11-10

回复 使用道具 举报

 楼主| 发表于 2003-5-26 01:14 | 显示全部楼层
谢谢richwin2000的doc.
虽然南客说应用fft和反fft(ifft)后,能够得到原始的时间序列可以证明其算法是正确的,但我在matlab和其他一些C和java程序里算的结果在频域上和飞狐算的结果有一些差异,这个差异不是太大,但这是一定程度的差异而非可忽略的差异。
虽然频域上存在差异,我再次应用反傅里叶变换后,可以得到原始的时间序列,所以问题就在这里, 我不清楚飞狐在处理时间序列的长度不是2的整数次方的情况下是否采取补0,或还是其他的方法 ? 恳请指导。
金币:
奖励:
热心:
注册时间:
2001-10-30

回复 使用道具 举报

发表于 2003-5-26 12:16 | 显示全部楼层
时间序列的长度不是2的整数次方的情况下如何补上的确是个问题,补0不行,会在分界附近发生突变,飞狐的办法是把原始序列移到中间,2头补上头尾的数。
试过对称补数,但效果不好

您有什么好办法?
金币:
奖励:
热心:
注册时间:
2001-8-2

回复 使用道具 举报

发表于 2003-5-26 12:21 | 显示全部楼层
补数的方式不同,的确变换出来的结果有些差异
您是怎么补的?如果补0,则滤掉高频后反变换出来的序列在K线头尾会抖动
金币:
奖励:
热心:
注册时间:
2001-8-2

回复 使用道具 举报

 楼主| 发表于 2003-5-26 14:38 | 显示全部楼层
谢谢 wilson的回答。
补0的确效果不好, 不过那是工程界的一般做法,对于时间序列也许不适用。
我想一种方法是干脆不补,直接使用DFT(Discrete Fourier Transform),虽然比FFT慢一点,但在K线不多的情况下(1000或更多以内吧),速度慢不了多少,尤其是现在计算机这麽快。DFT对序列长度是没有特别要求的。
另一种方法就是De-trend.(去除趋势), 连接头尾2点,得到一个趋势线,从整个时间序列中减去该趋势线, 然后头尾就都变成0了,然后采取补0后再反FFT,最后再加上趋势线,还原. 这种做法可能在周期的前部与原序列的走势吻合不是太好,但后半部分效果还可以.
总的来说,离散傅里叶变换(DFT)是基于稳定时间周期的假设的,即认为时间序列的末尾再下一个周期会回到周期的头部,但大家都知道股票的价格走势图是不存在这种所谓的周期的. 所以虽然fourier transform有滤去趋势中的噪音(扰动)的功效, 但其是否在趋势末尾有一定的预测功能还是只能在实践中验证.
金币:
奖励:
热心:
注册时间:
2001-10-30

回复 使用道具 举报

发表于 2003-5-26 15:54 | 显示全部楼层
谢谢eagle!
您可以先在MATLAB中做些实验,看看怎样处理效果最好,提供FFT函数的本意您应该很明白,看看怎样改进最能发挥作用。

我有空时也研究研究
金币:
奖励:
热心:
注册时间:
2001-8-2

回复 使用道具 举报

发表于 2003-5-26 15:58 | 显示全部楼层
在学时学过数字信号处理、统计信号处理,还有其他许多想法,比如小波分析能否应用到这种时间序列分析上?不过自从开始做软件,还真没时间搞研究了:(
金币:
奖励:
热心:
注册时间:
2001-8-2

回复 使用道具 举报

发表于 2003-5-26 19:58 | 显示全部楼层
实际上我认为fft对于股票没有多少意义,因为他的前提假设是周期延拓,这点就是违反股票价格规律的,对于预测后面没有意义。fft的主要作用个人认为主要用来判断一段时间内高频多还是低频多,从而分析股票的波动性
金币:
奖励:
热心:
注册时间:
2003-5-3

回复 使用道具 举报

签到天数: 1 天

发表于 2011-6-26 01:35 | 显示全部楼层
好帖,顶一个,去除噪音的方法还有哪些呢,大家不妨深入拓展讨论一下
金币:
奖励:
热心:
注册时间:
2006-8-9

回复 使用道具 举报

发表于 2013-12-31 22:10 | 显示全部楼层
专业,厉害。 哈哈哈
金币:
奖励:
热心:
注册时间:
2007-4-7

回复 使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站声明:MACD仅提供交流平台,请交流人员遵守法律法规。
值班电话:18209240771   微信:35550268

举报|意见反馈|手机版|MACD俱乐部

GMT+8, 2025-4-15 16:32 , Processed in 0.036893 second(s), 9 queries , Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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