CN104820581A - 一种fft和ifft逆序数表的并行处理方法 - Google Patents
一种fft和ifft逆序数表的并行处理方法 Download PDFInfo
- Publication number
- CN104820581A CN104820581A CN201510176603.1A CN201510176603A CN104820581A CN 104820581 A CN104820581 A CN 104820581A CN 201510176603 A CN201510176603 A CN 201510176603A CN 104820581 A CN104820581 A CN 104820581A
- Authority
- CN
- China
- Prior art keywords
- concordance list
- data
- permutation
- fft
- stored
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种FFT和IFFT逆序数表的并行处理方法,在环境许可的情况下,能够在线性时间内完成任意正整数阶的逆序数表的计算。根据预存储的任意正整数阶逆序数表,采用单线程多数据流的方式,计算任意正整数阶未知逆序数表,该方法不必依赖SIMD指令。在64位处理器环境条件下,本发明采用并行计算方法后可以将计算耗时缩减到并行前的二分之一或四分之一,能够高效计算高阶逆序数表。不同位宽的处理器皆可通过套用本方法,达到提高计算性能的目的,位宽越高,效率提升越大。
Description
技术领域
本发明涉及一种快速傅里叶变换(以下简称FFT)和快速傅里叶逆变换(以下简称IFFT)逆序数表的并行处理方法。
背景技术
时域-频域互转是音频讯号处理的常用手法。一般来讲,时域讯号不够直观,不利于处理,可以转换成频域信号再进行加工,然后再转换回时域讯号以供使用。其中时域讯号转换成频域讯号的过程可以用FFT实现,频域讯号转时域讯号的过程则可使用IFFT。已知数据的顺序重排是FFT和IFFT计算中的重要环节,其中FFT需要在变换计算前重排数据,而IFFT则需要在变换计算后重排数据。排列的顺序一般通过逆序数表来索引。所以是否能快速的获取逆序数表对傅里叶变换的整理性能有很大的影响。
已知逆序数表在计算机中可用一个一维数组来表示,其长度N’取决于FFT/IFFT的阶数M’,有N’=2M’,M’∈Z,Z为整数。现有逆序数计算方法主要有:逢二进一法、生成法等方法,采用这些方法对逆序数表进行处理存在速度较慢的不足,如对于长度为N’的逆序数表则需要计算N’-1个逆序数,这在数据量较大时,将会在很大程度影响快速傅里叶变换的整体性能。
不同年代,不同型号的计算机,处理能力不尽相同,目前主流的处理器能达到64位带宽或以上,故以64位举例。若处理器带宽高于64位,则每次可以处理更多组数据,提高并行度,和/或能处理的每个数据的位宽更宽,表示数值范围更大。
发明内容
本发明为克服上述现有技术所述的至少一种缺陷,提供一种FFT和IFFT逆序数表的并行处理方法,该方法是以一种类似单指令多数据流的方法快速生成逆序数表,采用该方法后,在处理较高阶数计算时有明显的性能提升,处理较低阶数时,仍能保证性能不差于传统方法。
为了实现上述目的,本发明的技术方案为:
一种FFT和IFFT逆序数表的并行处理方法,包括以下步骤:
(1)预存储任意正整数阶长度为N的逆序数索引表A,A的长度n=2N;
(2)确定所需处理计算的二进制逆序数索引表B的阶数为M,B的长度m=2M;
(3)根据预存储逆序数索引表A计算所需处理计算的二进制逆序数索引表B;
其是采用并行处理方式计算所需处理计算的二进制逆序数索引表,对需并行计算的数据分段整理,并确定数据的位长及存储空间;具体过程为:
设D为一个无符号整形变量,用于递推计算中,对数值进行辅助修正,
D=(1<<(M-N-1))
根据无符号整形变量D构造数组γ,
γ=D|(D<<T)|(D<<2T)|…|(D<<((P-1)T))
P为一次并行计算能处理的数据量;P值的计算方式为:
w表示CPU位处理指令能支持的最长位宽,T表示逆序数索引表A与数组γ中数值最大的元素按二进制存储至少需要用到的比特位数;
T的计算方式是:
n表示逆序数索引表A与数组γ中数值的个数;即逆序数索引表A与数组γ中包含n个整数的有序序列;
对预存储的逆序数索引表A与数组γ中的数据采用压缩存储法进行存储,
则预存储的逆序数索引表A中的n个数能够分成n′组表达,逆序数索引表B结果中的m个数能够分成m’批来计算;
设定循环变量j=n′;
则预存储表A中的n个数能够分成n′组表达,αi表示第i组,Xi*n表示预存储表A中第i*n个数据;
A={α0,α1,…,αn′-1},
αi={Xi*n|(Xi*n+1<<T)|(Xi*n+2<<2T)|...|(X(i+1)*n-1<<((P-1)T))}
B中的m个数能够分成m′批来表达,βi表示第i组,Yi*m表示预存储表B中第i*m个数据;
B={β0,β1,…,βm′-1},
βi={Yi*m|(Yi*m+1<<T)|(Yi*m+2<<2T)|...|(Y(i+1)*m-1<<((P-1)T))}
采用如下方式快速的求取到B;
k用来表示外层循环控制变量;i为内层循环控制变量。
其中,对预存储的逆序数索引表A中的数据采用压缩存储法进行存储的具体过程为:
(31)建立一个数组α,数组中每个元素的位宽均为T,且均为无符号整数;
(32)将P个元素按下标顺序依次致密写入内存中,元素之间不留空隙;
(33)把以α所在地址为首地址的内容看作位宽为T*P的无符号整数来取值。
本发明的一种FFT和IFFT逆序数表的并行处理方法,是采用位运算替代乘除,乘方运算,以增加效率;本发明利用处理器的位宽优势,采用单线程完成数据的并行运算(使用一条指令一次合并计算多个数据),提高处理效率。从n=2N推出m=2M只需进行M-N轮计算。本发明能够由任意阶预存储的逆序数表计算任意阶未知逆序数表。
与现有技术相比,本发明技术方案的有益效果是:本发明的一种FFT和IFFT逆序数表的并行处理方法,在环境许可的情况下,能够在线性时间内完成任意正整数阶的逆序数表的计算。根据预存储的任意正整数阶逆序数表,采用单线程多数据流的方式,计算任意正整数阶未知逆序数表,该方法不必依赖SIMD指令。在64位处理器环境条件下,本发明采用并行计算方法后可以将计算耗时缩减到并行前的二分之一或四分之一,能够高效计算高阶逆序数表;并且在更高位数的处理器环境下能得到更高的效率。在更低位宽的处理器环境下,效率不低于传统方法。
附图说明
图1为本发明方法的基本流程图。
图2为本发明方法并行化后的流程图。
图3为本发明方法的操作过程示例图。
图4为本发明数据取用顺序图。
图5为本发明8点FFT整体流程
图6为本发明8点IFFT整体流程图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
发明中使用的符号说明如下:
(1)Z为整数,Z+为正整数;
(2)逆序数表均为线性表,记A为预存逆序数表,B为待求逆序数表;
(3)记A的长度为n,阶数为N,即n=2N;
(4)记B的长度为m,阶数为M,即m=2M;
(5)记CPU位处理指令能支持的最长位宽为W;
(6)记期望使用到的最大阶数为L;
(7)运算符“<<”表示逻辑左移,运算符“>>”表示逻辑右移;
(8)运算符“|”表示位或操作;
(9)循环控制变量i,j;
(10)记P为一次并行计算能处理的数据数。
为了给出B与A之间的推导关系,需要以下假设:
(1)A={X0,X1,X2,…,Xn-1};B={Y0,Y1,Y2,…,Ym-1};
(2)n∈Z+;m∈Z+;N∈Z+;M∈Z+;
(3)n=2N;m=2M;
(4)M>N;
(5)
(6)A中内容为已知。
基本递推计算公式如下:
输入:A={X0,X1,…,Xn-1};
输出:B={Y0,Y1,Y2,…,Ym-1};
(1)Yi=Xi*2M-N; 0≤i<n
(2)
基本递推计算步骤如下,见图1:
步骤1:令D=(1<<(M-N-1));j=n;
D为一个无符号整形变量,作用是在后面的递推计算步骤中,对数值进行辅助修正。j是循环控制变量,初值为n。
步骤2:当M≤N,停机;否则,执行下列步骤;
步骤3:批量赋值:Yi=Xi<<D,0≤i<j;
通过用X0到Xj-1(含Xj-1)的值作为基础,用D值进行位移,计算Y0到Yj-1(含Yj-1)的值;
步骤4:批量赋值:Yi=Yi-j|D,j≤i<2j;
通过用Y0到Yj-1(含Xj-1)的值作为基础,将其与D值进行或运算,计算出Yj到Y2j-1(含Y2j-1)的值
步骤5:D=(D>>1);j=(j<<1);
改变变量D的值,将其右移1位,改变变量j的值,将其左移一位;
步骤6:当j<m时,转步骤4;否则,表B生成完毕。
通过上述步骤3、4跑完后,将计算出下标i取所有不同值时Yi的对应取值。
并行化计算的目的就是通过构造特殊的数据结构,让CPU执行一次指令即可得出一组结果,而不是只得出一个结果。即输入两组数据,经过一定运算后输出一组数据。具体来说就是:第一组数据中的第一个元素与第二组数据中的第一个元素进行或运算,第一组数据中的第二个元素与第二组数据中的第二的元素进行或运算,如此类推,直到第一组数据中的最后一个元素与第二组数据中的最后一个元素进行或运算。这种运算,若采用传统的方式,每一对元素,都需要逐个计算,即一组数据中有多少个数值,就要计算多少次。本并行方法就是设法通过构造特殊的数据格式,使一次输入两组数据,并令CPU仅仅通过一次运算,就能得出一组结果。
为实现并行化计算,引入以下推论:
定义集合H和I,分别代表输入的第一组和第二组数据,集合E为输出结果。
c0,c1,c2,…cr-1为第一组输入数据中的各个数值,d0,d1,d2,…dr-1为第二组输入数据中的各个数值。
集合H={c0,c1,c2,c3,…,cr-1},ci∈[0,r),ci∈Z,r∈Z;
H为一个包含r个整数的有序序列,其中序列中的每个数值取值都在0(包含0)到r(不包含r)之间。
集合I={d0,d1,d2,d3,…,dr-1},di∈[0,r),di∈Z,r∈Z
I为一个包含r个整数的有序序列,其中序列中的每个数值取值都在0(包含0)到r(不包含r)之间。
则若使用直白的,传统的计算方式,所要求的运算可以写成如下式子:
E=H|I={c0|d0,c1|d1,c2|d2,c3|d3,…,cr-1|dr-1}
从上式可见,计算集合H|I实际上是对他们里面对应的元素c和d做了很多次异或运算。
为了提高运算效率,使一系列运算变成单一的一次运算,需要对输入的两组数据H和I进行变换,具体操作就是将他们进行压缩存储。
为了将有序序列H中的所有元素压缩起来,使用一个单一的长整数p来表示,也为了将有序序列I中的所有元素压缩起来,使用另一个单一的长整数q来表示,需要引入常量T。T表示H和I中数值最大的元素按二进制存储至少需要用到的比特位数。T的计算方式是:
p的计算方法相当于将H中的每个元素采用T比特二进制存储,其中首个元素存放在最前面,下一个元素紧接着上一个元素存放,直至将所有元素存放完毕。具体表现成公式即为:
p=c0|(c1<<T)|(c2<<2T)|c3<<3T)|…|cr-1<<((r-1)*T))
而q的计算方法与p一致,表现为公式即为:
q=d0|(d1<<T)|(d2<<2T)|(d3<<3T)|…|(dr-1<<((r-1)*T))
p与q进行异或运算后得到的结果记为w,则实际上w中已经包含了H中每个元素与I中的每个元素取异或后的计算结果。但是是以一种压缩的形式表现的。
w=p|q
R=2T-1
为了从压缩形式的w中提取出每个结果,需要对比特位进行截取,而数值R则是辅助截取的工具。提取方法是p的压缩方法的逆向操作,即截取长整形的头T比特作为第一个结果数,再向后截取T比特作为第二个结果,如此类推,直至取得所有结果。具体可表现为如下公式:
R=2T-1
集合Z={w&R,(w>>T)&R,(w>>(2T))&R,…,(w>>((r-1)*T))&R}
则集合Z中包含了所有最终结果,即Z与E等价。
E=H|I={c0|d0,c1|d1,c2|d2,c3|d3,…,cr-1|dr-1}则有以下式子恒定成立:
Z=E
通过上面的步骤,可以知道,可以用p|q来代替H|I。由于运算p|q是一个单一的整数或运算,而H|I则是一组较复杂的运算,包含多个整数或运算,所以运算p|q比H|I的计算量要小,得到提高计算效率的效果。
而如果直白地按照上面的方法,对H和I进行压缩,算完后又对w进行提取,压缩和提取所用的额外计算量会特别大,以致于使整个计算的效率比不采用并行化方法还要差,所以需要如下的方法来规避压缩和提取步骤所产生的计算量:
故在本发明中假设CPU数据类型的位宽足够长,
在运算过程中,运算p=c0|(c1<<T)|(c2<<2T)|(c3<<3T)|...|(cr-1<<((r-1)*T))可用如下方式简化:
(1)建立一个数组α,数组中每个元素的位宽均为T,且均为无符号整数;
(2)将每个元素按下标顺序依次致密写入内存中,元素之间不留空隙。
(3)把以α所在地址为首地址的内容看作位宽为T*r的无符号整数来取值,则得出的值即等价于p。
需要进一步说明的是,以上数据的打包和拆包过程只是对同一段内存以不同形式访问,故此方法实际上没有任何运算量。并且,实际上原数据中的每个元素就是以T位来存储的,可以直接取用,并不需要一个步骤先从其他格式转换为以T位存储的格式。所以这里也没有任何计算量。这种方法下面将被简称作“压缩存储法”,同理,
运算q=d0|(d1<<T)|(d2<<2T)|(d3<<3T)|…|(dr-1<<((r-1)*T))也可以使用压缩存储法进行简化。
结合上述公式,得出本发明并行化后的递推公式如下:
并行前的方法是每次计算一个数,而并行后则是每次计算一批数,一批数里到底包含多少个数,由P值确定,P值的计算方式为:
则预存储表中的n个数可以分成n’组表达,结果中的m个数可以分成m’批来计算。
设定循环变量j=n′;
则预存储表A中的n个数可以分成n′组表达,αi表示第i组。
A={α0,α1,…,αn′-1},
αi={Xi*n|(Xi*n+1<<T)|(Xi*n+2<<2T)|...|(X(i+1)*n-1<<((P-1)T))}
结果中的m个数可以分成m′批来表达,βi表示第i组。
B={β0,β1,…,βm′-1},
βi={Yi*m|(Yi*m+1<<T)|(Yi*m+2<<2T)|...|(Y(i+1)*m-1<<((P-1)T))}
D的意义与前面非并行的方法相同,
D=(1<<(M-N-1))
为了并行化计算,使每次运算可以让β中的一批Y分别与D进行异或,要构造γ
γ=D|(D<<T)|(D<<2T)|…|(D<<((P-1)T))
则βi|γ的运算刚好可以套用并行化推论中的H|I与p|q等价的特性。由此,每一批计算都只需要一步整形异或计算即可完成,快速的求取到B。
仿照基本公式中的
(1)Yi=Xi*2M-N; 0≤i<n
(2)
两式,将并行化方法应用在上面,则得到下面两式:
k用来表示外层循环控制变量;i为内层循环控制变量,则B为所求。
该方法能在CPU能够一次处理超出64位数据的条件下进行推广,以获得更高的计算效率和计算范围,具有可复用性。
图3,以预存储2阶逆序数表计算4阶逆序数表作为示例,划分每个逆序数二进制长度为4位,每4个逆序数可以构成一个16位的整形。
图4表示的数据取用过程:
(1)由X0,X1,X2,…,Xn-1推出Y0,Y1,Y2,…,Yn-1;
(2)由Y0,Y1,Y2,…,Yn-1推出Yn,Yn+1,Yn+2,…,Y2n-1;
(3)由Y0,Y1,Y2,…,Y2n-1推出Y2n,Y2n+1,Y2n+2,…,Y4n-1;
(4)由Y0,Y1,Y2,…,Y4n-1推出Y4n,Y4n+1,Y4n+2,…,Y8n-1;
(5)…。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
有一段采样率为44.1kHz的音频信号,其中18kHz至20kHz之间有高频杂讯,使用以下步骤去除。
步骤1:确定处理精度要求,例如按1024点FFT进行计算;
步骤2:从首个采样点开始,将音频信号切分成多个片段,每段1024点,最后一段若不足1024点,则通过补0充满1024点。
步骤3:对每一段时域讯号进行1024点FFT,每一段时域讯号对应得到一段1024点的频域讯号。
步骤4:将每一段频域讯号中表示18k-20kHz频率的点设为0。
步骤5:将每一段频域讯号通过IFFT转换为时域讯号片段。
步骤6:按顺序拼接处理过后的时域讯号片段,得到整段音频,则为所求。
其中,FFT和IFFT过程中的逆序过程可以通过逆序数表来排列,而逆序数表的生成方法则是本发明的内容。在本实例中,FFT和IFFT点数相同,故两个步骤的逆序数表可以通用,即逆序数表只需要生成一次,供两次调用。
实例1:
套用基本递推计算步骤
(1)当M=N+1时,即从N阶推出N+1阶,此时,n=2N,m=2N+1,计算步骤分析如下:
步骤1:循环控制变量D=1,j=n;
步骤2:Yi=Xi*2 0≤i<j;
步骤3:Yi=Xi-n*2+1 j≤i<2j;
步骤4:D=0;j=2j;
步骤5:j==m,停机。
(2)当从N阶转换为M阶时,即为步骤1-步骤4所列。
实例2:16阶以上逆序数表的求取速度
选取一些现有的方法与本发明进行比对,考虑到主流的CPU为64位处理器,仅划分2*32位一组来计算16阶以上的逆序数表。对于16阶以上的高阶逆序数表,其执行时间与其他方法的执行时间对比如表1,时间单位为毫秒。
表1各方法实际耗费时间对比
实例3:
如图3所示,若取N=2,M=4,L=4,W=16,则表A为{0,2,1,3},表A中元素按4位无符号整数记录,采用压缩存储法存储,可合并存放在一个16位无符号整数上,记为G;将表B的每个元素按4位无符号整数记录,然后从首个元素起,将每四个连续元素使用压缩存储法组合,得到一个16位无符号整数数组,记为β;执行步骤1后,构造一个64位无符号数γ=D|(D<<4)|(D<<8)|(D<<12)。则步骤3中,Yi=Xi|D,i∈[0,4)可以简化为β[0]=G|γ。步骤4的原理与步骤2相似,也是每四个操作合并成一个,可简化成βi=βi-j|γ,i∈[j,j<<1)。步骤7中的D>>=1,在实际操作中也演变成了β>>=1。由于计算耗时主要是在步骤4,在此实例中步骤4操作次数减为四分之一,所以计算耗时也降至原来的四分之一。
本发明公开了一种FFT和IFFT逆序数表的并行处理方法,在环境许可的情况下,能够在线性时间内完成任意正整数阶的逆序数表的计算。根据预存储的任意正整数阶逆序数表,采用单线程多数据流的方式,计算任意正整数阶未知逆序数表,该方法不必依赖SIMD指令。在64位处理器环境条件下,本发明采用并行计算方法后可以将计算耗时缩减到并行前的二分之一或四分之一,能够高效计算高阶逆序数表。不同位宽的处理器皆可通过套用本方法,达到提高计算性能的目的。位宽越高,效率提升越大。
逆序数表的应用
逆序数表的处理是快速傅里叶变换(以下简称FFT)和快速傅里叶逆变换(以下简称IFFT)计算中的重要而不可缺少的步骤,具体说就是以一种类似单指令多数据流的方法,快速生成逆序数表。FFT应用离不开逆序数表的处理,因而其应用领域与FFT应用领域一样。
FFT方法的应用领域:
1)利用FFT实现OFDM调制解调器;
2)在语音信号处理中的应用,对语音信号进行FFT变换,将其从时域变换到频域,可以更加直观地观察它的频谱分布、宽度等信息,对进一步设计各种滤波器、编码及调制方式、识别模式等工作奠定基础。
FFT在语音信号处理方面的应用非常常见:
(a)语音识别(刑侦、门禁系统等)
(b)声音模拟(候鸟、鱼群的迁徙引导等)
(c)话音伪装(TOM猫等)
3)单频噪声前后语音信号在时域和频域的呈现;
4)FFT的在图像处理中的应用
a)图像保存,可进行编码压缩;通过FFT将图像分解为一组越来越小的正交归一图像,具有很高的压缩比仍能够将原始数据完全恢复而不引入任何失真。(所以当我们希望将一幅图像以一种更紧凑的数据格式进行编码,同时保持数据不丢失时,FFT不失为一个很好的工具。)
b)图像滤波;在进行FFT后,若在反变换之前对变换域进行选择,可对图像进行滤波处理。
c)图像增强;正变换将一幅图像分解为大小、位置和方向都不同的分量,在逆变换之前改变域中某些系数的幅度,有选择提升感兴趣的分量,而忽略不需要的东西。
d)图像复原;目标是对退化的图像进行处理,使它复原成没有退化的理想图像。(例如:图像上的污点,我们可以利用信息的相关性,通过傅里叶卷积来达到隐去污点的目的。)
4)在功率谱估计中的应用,实现功率的快速估计;
在信号的功率谱估计中通常采用基于自相关函数的方法,而基于自相关函数的功率谱估计的结构与离散傅里叶变换非常类似。将其频谱分量所对应的参数加以调整和限制,使其与离散傅里叶变换输出完全一致,然后利用FFT算法来计算功率谱,从而实现功率谱的快速估计。
5)在雷达信号处理中的应用;雷达信号处理算法中大多数采用FFT方法测量频率,如果提高测频精度需增加FFT点数,增加FFT点数的实质是在整个单位圆(即整个距离谱)上均匀增加频域采样点数,从而造成运算量的成倍增加。Chirp-z变换可以实现对回波频谱中的某段进行局部细化,从而在采样点数、运算量增加不多的情况下,大大提高雷达的测量精度。
匹配傅里叶变换,检测反辐射导弹,改进机载雷达的目标跟踪性能,地面运动目标检测,特别是在实际3米SAR数据中,应用匹配傅里叶变换检测出了慢速运动目标。(匹配傅里叶变换的基本原理是其变换基的相位随时间变化规律必须与信号相位随时间变化规律相同。)
6)可用于运动目标检测;LFMCW在目标检测上存在一定难度,利用二维FFT处理技术对目标回波信号相位信息进行提取,可有效地抑制固定杂波,对动目标进行检测。对每个调频周期T内的回波信号,分别作N点的FFT,再对M个周期的FFT计算结果按每个距离单元分别作M点FFT(二维FFT算法)。
相同或相似的标号对应相同或相似的部件;
附图中描述位置关系的用于仅用于示例性说明,不能理解为对本专利的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (2)
1.一种FFT和IFFT逆序数表的并行处理方法,其特征在于,包括以下步骤:
(1)预存储任意正整数N阶的逆序数索引表A,A的长度为n=2N;
(2)确定所需处理计算的二进制逆序数索引表B的阶数为M,B的长度m=2M;
(3)根据预存储逆序数索引表A计算所需处理计算的二进制逆序数索引表B;
其是采用并行处理方式计算所需处理计算的二进制逆序数索引表,对需并行计算的数据分段整理,并确定数据的位长及存储空间;具体过程为:
设D为一个无符号整形变量,用于递推计算中,对数值进行辅助修正,
D=(1<<(M-N-1))
根据无符号整形变量D构造数组γ,
γ=D|(D<<T)|(D<<2T)|...|(D<<((P-1)T))
P为一次并行计算能处理的数据量;P值的计算方式为:
W表示CPU位处理指令能支持的最长位宽,T表示逆序数索引表A与数组γ中数值最大的元素按二进制存储至少需要用到的比特位数;
T的计算方式是:
n表示逆序数索引表A中数值的个数;即逆序数索引表A为包含n个整数的有序序列;
对预存储的逆序数索引表A中的数据采用压缩存储法进行存储,
则预存储的逆序数索引表A中的n个数能够分成n′组表达,逆序数索引表B结果中的m个数能够分成m’批来计算;
设定循环变量j=n′;
则预存储表A中的n个数能够分成n′组表达,αi表示第i组,Xi*n表示预存储表A中第i*n个数据;
A={α0,α1,...,αn′-1},
αi={Xi*n|(Xi*n+1<<T)|(Xi*n+2<<2T)|...|(X(i+1)*n-1<<((P-1)T))}
B中的m个数能够分成m′批来表达,βi表示第i组,Yi*m表示预存储表B中第i*m个数据;
B={β0,β1,...,βm′-1},
βi={Yi*m|(Yi*m+1<<T)|(Yi*m+2<<2T)|...|(Y(i+1)*m-1<<((P-1)T))}
采用如下方式快速的求取到B;
k用来表示外层循环控制变量;i为内层循环控制变量。
2.根据权利要求1所述的FFT和IFFT逆序数表的并行处理方法,其特征在于,对预存储的逆序数索引表A中的数据采用压缩存储法进行存储的具体过程为:
(21)建立一个数组α,数组中每个元素的位宽均为T,且均为无符号整数;
(22)将P个元素按下标顺序依次致密写入内存中,元素之间不留空隙;
(23)把以α所在地址为首地址的内容看作位宽为T*P的无符号整数来取值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510176603.1A CN104820581B (zh) | 2015-04-14 | 2015-04-14 | 一种fft和ifft逆序数表的并行处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510176603.1A CN104820581B (zh) | 2015-04-14 | 2015-04-14 | 一种fft和ifft逆序数表的并行处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104820581A true CN104820581A (zh) | 2015-08-05 |
CN104820581B CN104820581B (zh) | 2017-10-10 |
Family
ID=53730886
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510176603.1A Active CN104820581B (zh) | 2015-04-14 | 2015-04-14 | 一种fft和ifft逆序数表的并行处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104820581B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107180640A (zh) * | 2017-04-13 | 2017-09-19 | 广东工业大学 | 一种相位相关的高密度叠窗频谱计算方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030200414A1 (en) * | 2002-03-15 | 2003-10-23 | Thomas Harley | Address generators for mapping arrays in bit reversed order |
CN1493042A (zh) * | 2001-02-24 | 2004-04-28 | �Ҵ���˾ | 在一个分布式存储器的并行多节点计算机上的多维快速傅里叶变换的高效实现 |
CN102375805A (zh) * | 2011-10-31 | 2012-03-14 | 中国人民解放军国防科学技术大学 | 面向向量处理器的基于simd的fft并行计算方法 |
CN102637124A (zh) * | 2012-03-22 | 2012-08-15 | 中国电子科技集团公司第五十八研究所 | 一种基4fft算法的并行处理装置及方法 |
CN103699516A (zh) * | 2014-01-13 | 2014-04-02 | 中国人民解放军国防科学技术大学 | 向量处理器中基于simd的并行fft/ifft蝶形运算方法及装置 |
CN104142811A (zh) * | 2014-07-18 | 2014-11-12 | 中国电子科技集团公司第三十八研究所 | 一种基于数字信号处理的高效并行处理优化方法 |
-
2015
- 2015-04-14 CN CN201510176603.1A patent/CN104820581B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1493042A (zh) * | 2001-02-24 | 2004-04-28 | �Ҵ���˾ | 在一个分布式存储器的并行多节点计算机上的多维快速傅里叶变换的高效实现 |
US20030200414A1 (en) * | 2002-03-15 | 2003-10-23 | Thomas Harley | Address generators for mapping arrays in bit reversed order |
CN102375805A (zh) * | 2011-10-31 | 2012-03-14 | 中国人民解放军国防科学技术大学 | 面向向量处理器的基于simd的fft并行计算方法 |
CN102637124A (zh) * | 2012-03-22 | 2012-08-15 | 中国电子科技集团公司第五十八研究所 | 一种基4fft算法的并行处理装置及方法 |
CN103699516A (zh) * | 2014-01-13 | 2014-04-02 | 中国人民解放军国防科学技术大学 | 向量处理器中基于simd的并行fft/ifft蝶形运算方法及装置 |
CN104142811A (zh) * | 2014-07-18 | 2014-11-12 | 中国电子科技集团公司第三十八研究所 | 一种基于数字信号处理的高效并行处理优化方法 |
Non-Patent Citations (2)
Title |
---|
SAU-GEE CHEN, SHEN-JUI HUANG, MARIO GARRIDO, SHYH-JYE JOU: ""Continuous-flow Parallel Bit-Reversal Circuit for MDF and MDC FFT Architectures"", 《IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS》 * |
方志红,张长耀,俞根苗: ""利用逆序循环实现FFT运算中倒序算法的优化"", 《信号处理》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107180640A (zh) * | 2017-04-13 | 2017-09-19 | 广东工业大学 | 一种相位相关的高密度叠窗频谱计算方法 |
CN107180640B (zh) * | 2017-04-13 | 2020-06-12 | 广东工业大学 | 一种相位相关的高密度叠窗频谱计算方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104820581B (zh) | 2017-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Tropp et al. | Streaming low-rank matrix approximation with an application to scientific simulation | |
CN111091603B (zh) | 一种超声成像方法、装置、可读存储介质及终端设备 | |
CN106373167B (zh) | 一种基于深度神经网络的压缩传感核磁共振成像方法 | |
EP2290938B1 (en) | Signal processing method, data processing method and data processing apparatus | |
CN106507958B (zh) | 外辐射源雷达信号实时相干积累的方法 | |
Chen et al. | A theory on non-constant frequency decompositions and applications | |
CN103519847A (zh) | 基于超声回波射频信号的多普勒血流速度估测方法和系统 | |
CN101739666A (zh) | 基于一维快速哈特莱变换和匹配追踪的图像稀疏分解快速算法 | |
CN113222998B (zh) | 基于自监督低秩网络的半监督图像语义分割方法及装置 | |
CN103646011A (zh) | 一种基于线性调频z变换的信号频谱细化方法 | |
Qian | A novel Fourier theory on non-linear phases and applications | |
CN104077479B (zh) | 一种基于守恒迎风格式获取参量阵声场空间分布的方法 | |
CN105608059A (zh) | 一种基于改进的按位替换法求矩阵三角分解的模块 | |
Gao et al. | Uncertainty principle for the two-sided quaternion windowed linear canonical transform | |
Ju et al. | Derivation and analysis of fast bilinear algorithms for convolution | |
Zhu | Topological strings, quiver varieties, and Rogers–Ramanujan identities | |
CN113935246A (zh) | 一种信号鲁棒稀疏时频分析方法、终端设备及存储介质 | |
Costarelli et al. | The multivariate Durrmeyer-sampling type operators in functional spaces | |
CN105551007A (zh) | 基于频域及谱矩阵的sar图像多层贝叶斯盲解卷积方法 | |
CN104820581A (zh) | 一种fft和ifft逆序数表的并行处理方法 | |
He et al. | Deep frequency-recurrent priors for inverse imaging reconstruction | |
CN105137176B (zh) | 一种利用快速三角形式傅里叶变换的信号谐波分析方法 | |
CN112364989A (zh) | 一种基于快速傅里叶变换的卷积神经网络加速设计方法 | |
CN105574832A (zh) | 基于迭代方向滤波器组可逆深度卷积网络结构 | |
Tierz | Exact solution of Chern-Simons-matter matrix models with characteristic/orthogonal polynomials |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |