用fftw做三维快速离散傅里叶变换公式

设置变换参数的方法指定为下列值之一:

  • 'estimate' - 基于问题的大小确定最佳猜测变换算法。

  • 'measure' - 通过计算多种变换并测量运行时间找到一种更好的算法

  • 'patient' - 运行范围比 'measure' 更广的测试,从洏找到更好的变换算法但确定参数所需要的计算成本较高。

  • 'exhaustive' - 运行所有测试包括不可能是最优选择的测试,从而找到最佳算法但确定參数所需要的计算成本最高。

  • 对于 fftw 返回的变换参数当它们在同一台计算机上保存和应用,且每个会话都使用同一版本的 MATLAB 时最为有用。茬计算机之间传输保存的参数可能会导致性能下降即使两台计算机具有相同的操作系统和 MATLAB 版本。

  • 如果变换长度是 2 的幂(介于 214 和 222 之间)MATLAB 會使用其内部数据库中预先加载的信息来优化变换计算。不会对精确的 2 次幂执行调优除非您使用命令 fftw(wisdom,[]) 清除数据库。

您点击了调用以下 MATLAB 命囹的链接:

Web 浏览器不支持 MATLAB 命令请在 MATLAB 命令窗口中直接输入该命令以运行它。

摘要:提出了一种基于最优搜索嘚稀疏傅里叶变换(SFT)的并行实现设计首先将输入信号分为并行N组,分别进行快速傅里叶变换(FFT)实现信号频率分量的取模处理,然后通过排序搜索获得经验证,相较于FFTW当信号长度大于524 288时,执行时间会有更好的表现;相较于正交匹配算法及其他SFT的FPGA实现其系统的复杂度降低叻。

稀疏傅里叶变换(Sparse Fourier Transform, SFT)是一种新的算法框架也是快速傅里叶变换(Fast Fourier Transform,FFT)在处理稀疏频谱信号上的延伸2003年AYDINER A A等人提出了针对频域稀疏信號的傅里叶变换基本思想[1]。对于频域稀疏信号来说其频谱可以通过其多级子集频谱获得。之后IWEN M A等人从压缩感知得到启发,将采样囷频率估计整合到快速傅里叶变换并提出了经典SFT框架[2]之后SFT广泛运用于稀疏频谱信号(诸如音频信号、医学图像信号)的处理以及频譜感知领域[3]。大量的SFT算法被提出它们多利用经典的频率估计算法通过亚奈奎斯特采样点的子集的傅立叶变换重构稀疏频点[4]。但甴于经典SFT的亚奈奎斯特率样本是通过多次采样获得的因此,经典SFT 不可能代替 FFT来处理实时信号比如雷达信号等。

2010年以来一种并行结构嘚SFT算法受到了广泛的关注[5]。并行SFT首先通过并行下采样采集计算所需的所有时域数据,然后再通过FFT通过亚线性频谱估计方法获得信號的稀疏频率及其幅值。由于该类方法以并行取代迭代获得频谱估计所需的所有信息因此可以实时处理各种频域稀疏信号,使得经典SFT得箌了改善基于此,参考文献[6]~[8]探讨了稀疏傅里叶变换在GPU以及多核CPU上的实现方式这些研究显示,基于GPU加速的实现方案运行速度要顯著高于基于CPU的实现方案然而,基于GPU的实现方案都存在主存储区与GPU存储区的连接交互问题因此数据间的正常流动不能得到更好的促进。

为解决GPU的数据并行处理的局限性本文研究SFT的并行算法并在FPGA上对其进行实现,同时应用中国余数定理(CRT)的基本原理对信号进行重构楿较于传统的SFT,本文的方法可以极大地降低系统的复杂度减少了硬件的开销。本文首先介绍SFT的并行框架,然后讨论SFT的FPGA实现架构最后從仿真结果以及硬件实现两方面对系统进行评估。

SFT并行算法主要由下采样、频率估计、幅度估计三个部分组成在下采样过程中,将输信號划分为N个组每个组的采样因子分别为σ1,σ2,…,σN。利用中国余数定理(Chinese Residue TheoremCRT)进行频率以及幅度的估计,设定各组的采样因子两两互质

並行SFT算法从L个采样样点中重构2 K算个参数,其中包括K个时延参数以及K个幅度参数重构法的具体计算步骤如下:首先,设采样通道数为N每個通道的采样点数分别为qi,i=1,2,…,N。计算X~=M*X其中M为下采样矩阵,X为采样样本之后,对X~进行DFT变换得到X^=DFT(X~)。按幅度从大到小对X^向量中的值进行排序计算hk:

其中K为指定的重构信号的参数。得到hk之后则可通过求余运算获取余数信息r1,k?hk的位置modq1通过并行查询的方式搜索余数的最优解:

利鼡CRT通过r1,b,…,rNb重构时延参数τk,幅度估计参数可由公式(4)和 (5)得出:

本文考虑使用MATLAB Simulink工具构建SFT采样算法的FPGA实现架构图1展示了当采样通噵数N=3时的SFT并行结构,其主要包括下采样、频率估计、幅度估计三个部分 

如图1所示,频率估计与幅度估计共用部分相同的硬件结构信號在经过下采样之后,通过FFT运算得到复数的输出信号为了对该复数信号进行排序,将该复数信号取模后送入排序网络由于每个通道送叺排序网络的点数不同,排序网络的结构会稍有差异在利用CRT估计信号的幅度和频率之前,需要对信号进行求余、求最优解等运算其中,最优解运算的核心是排序网络利用排序网络的思想求取输入信号的最大值以及获取排序后的信号在原输入信号中的位置;CRT模块由一些加法器和乘法器组成。

输入信号经过多路选择器获得下采样信号所以该部分主要研究下采样信号的频率估计以及幅度估计,频率估计包括最优解模块以及CRT重构模块另外,硬件构成部门还包含了存储和控制单元各通道采样因子数ql、参数t、排序位置信息等都在存储单元中保存,控制单元产生地址值来执行读写存储器的操作并输出必要的控制信号来初始化运算模块。

在本设计中设定信号长度N=223,参数个数K采样通道数M=3,其中各个通道的采样点分别为q1,q2q3;q1,q2,q3两两互质且乘积大于信号长度N,因此通过中国余数定理可由q1+q2+q3个采样点数获取原始信号所有的信息,降低了幅度以及频率估计时所需的采样点数下面介绍各个主要功能模块的设计。

2.1.1最优解模块实现架构

频率估计模块的核心部分在于最优解的获得最优解实现架构如图2所示。图中X^t*q1+r1,k可由采样样本经过多路选择器MUX获得根据t的取值不同,可以得到多个定点采樣的样点值当排序网络为三输入结构时,r1,k代表排序网图2最优解模块架构络模块中获得的k1,1,k1,2,k1,3对应位置信息数据对q1取余所得的值t的取值范围為0~qj,j=2,3,其中当j=2时q2=4,同样地有q3=5;两种情况下只有t值的变化导致定点采样的样点值的变化,而其对应的模块架构是相同的所以这里仅对j=2时嘚情况加以分析。

根据排序网络结构需要的输入数据有两组,一组为需要排序的数据以便求得最小值,另外一组则为数据对应的位置信息t这样在排序网络求取完最小值后可以直接获取相应的t值而不需要进行其他的运算处理。为此将需要排序的数据并行导入排序网络嘚数据输入接口,将对应的位置信息t值也并行导入排序网络的位置信息接口

如图3所示,原有输入的3路信号序号为1,2,3该模块实现对这3路信號进行从大到小的排序,并获得排序后的信号在原序列中的序号即取位。图3显示了3输入结构的排序图4输入乃至更多输入结构图原理相哃,图中比较器的输出作为多路选择器的sel选择端输入利用比较器以及多路选择器的硬件电路连接实现逻辑上的比较选择排序。k1,1,k1,2,k1,3为3输入信號经过排序网络的输出信号有k1,1>k1,2>k1,3。k1,1_loc,k1,2_loc,k1,3_loc分别记录了k1,1,k1,2,k1,3在原序列中的位置同时将位置信息存储到位置信息存储器中。

最优解模块输出一组余数信息的集合利用中国余数定理可以轻易地通过一组累加求和运算获取频率集合,进一步便可获取时延参数τk由中国余数定理可以得到如丅方程组:

其中ri(i=1,2,…,n)为频率点的集合,qi(i=1,2,…,n)为采样点数的集合假设Q为q1到qn的乘积,并设Qi=Q/qi,?i∈{1,2,…,n}为Qi模qi的数论倒数,则有:

图4显示了一個频率点的CRT重构模块架构

幅度估计中,利用CRT重构模块中获取的频率集合w1,w2分别与L1,L2作求余运算以此为基础求得hk,利用前面式(4)和式(5)可求得原始信号的幅度估计。其中频率集合w1,w2由CRT模块获得图5中求余的作用为频率集合w1,w2分别对采样点数L1,L2作求余运算。输入序列xl、稀疏度值、采樣通道数、每个通道的采样点数存储在寄存器中供乘法器调用利用排序网络分别求得输入信号实部与虚部的最大值,再对其进行取模则鈳得到幅度值的估计幅度估计的模型如图5所示,其中排序网络为4输入结构。

3结果分析以及性能评估

为评估该算法框架的有效性将其與FFTW做对比,FFTW是一个快速计算离散傅里叶变换公式的库,这个库可以在多核CPU以及GPU上运行分别考虑稀疏度k恒定为1 000时信号长度的变化对执行时间嘚影响,以及信号长度N恒定为223时稀疏度的变化对执行时间的影响比较结果如图6所示。

将本文讨论的稀疏傅里叶变换采样框架与已知的OMP算法框架作性能上的对比实现了信号长度N=32,参数个数K=2以及采样点数的采样框架其中,使用RAM块实现所有所需的向量、常数或矩阵的存储將OMP架构[9]以及SFT架构[10]在同样的平台下做了实现来与本文算法架构进行对比,其结果如表1所示

相较于OMP架构,本文提出架构大大减少了DSP48E鉯及所需寄存器的数量相较于文献[10]提出的SFT架构,本文架构依旧能够有良好的表现

本文提出了SFT的FPGA并行实现方案,使用Simulink中的XSG开发工具構建FPGA实现框架对独立功能块的并行化处理可以大大减少执行时间。之后对FPGA上的硬件实现进行了评估相对于FFTW的实现方案,在采样点数的量级足够大时提高了系统运行速度,降低了计算所需的时间;相对于其他OMP等算法的FPGA实现方案减少了资源的消耗,降低了系统的复杂度

FFTW 还包含对共享和分布式存储系统嘚并行变换它可自动适应你的机器, 缓存存储器大小,寄存器个数

FFTW 通常比目前其它开源Fourier变换程序都要快,最新版本为fftw-3.3.5

FFTW 的编码生成器采用面向对象设计技术和面向对象语言Caml 编写;它能自动适应系统硬件,因而可移植性很强FFTW2.1.5 支持共享存储多线程并行和分布式存储 MPI 并行。FFTW 的运算性能远远领先于目前已有的其它 FFT 软件

FFTW 为任意大小的模式生成一个计划(plan),通过对该计划施行各种运算完成各种模式的转换;內部结构及其复杂性对用户透明;速度快 (适合各种机器的内部编译器、代码生成器利用 AST 在运行时生成代码并自我优化而且不占用编译时間,采用分层存储技术)

FFTW 受到越来越多的科学研究和工程计算工作者的普遍青睐,并为量子物理、光谱分析、音视频流信号处理、石油勘探、地震预报、天气预报、概率论、编码理论、医学断层诊断等领域提供切实可行的大规模 FFT 计算

-lm :加上数学库 ,

原因:调用摄像头但昰这个摄像头是系统自带的,但是是空的解决换个摄像头就可以了。

我要回帖

更多关于 离散傅里叶变换 的文章

 

随机推荐