注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

一粒浮尘

飘渺虚无

 
 
 

日志

 
 

FFTW学习笔记(1)  

2012-02-06 09:21:00|  分类: FFTW3 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

fftw是一个专门用来进行快速离散傅立叶变换的数值计算库。它的使用说明文档内容不多,因为这个库本身就很有针对性,专做Fourier Transfrom,所以内容少。但是内容少并不意味着容易搞清楚怎么使用。当然,如果跑着玩,随便弄些数据,让它去帮助你变换,这是可以的,至少说明你会用这个库,但是你还不清楚更细节的东西,因此也没法明白fftw到底计算了些什么。

这些天做的一个问题,需要用到快速傅立叶变换,fftw当然是首选了。fftw提供了很多类型的变换(参见说明文当)。

我需要的是3D的从复数变换到实数的这样一种情况,这种变换首先就得注意初始(in data)数据的位置安排,要使得输入数据满足共轭性。这种安排随着数据维度的增加而变得更加复杂。我从1D的情况开始,写了一些简单的code去实现这样一种变换,很顺利;但是在2D的时候,相对复杂些了,不过也还好,还是搞清楚了。最后是3D的,情况更加复杂,不过当我弄明白1D,2D两种情况下如何处理以后,这些就都显得相对容易了。

不过我还有一个不明白的地方,以2D为例:
why the initial numbers in[0][j] and in[i][0] must be zeros?

I tried other values, but failed, the outputs are wrong ...
The FFTW gives real output only when I set in[0][j] and in[i][0] to zero...

===================================================================
Problem Solved!
原来是我程序中一个地方出了些错误,在一个条件判断语句if前少了一个else;
另外,初始化数组时要严格按照共轭条件来。只有少数点会因为自身共轭的原因而应该是实数。

 


  评论这张
 
阅读(212)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017