一种信号处理方法、装置、电子设备及可读存储介质与流程

专利检索2022-05-11  5



1.本发明实施例涉及信号处理技术领域,尤其涉及一种信号处理方法、装置、电子设备及可读存储介质。


背景技术:

2.目前,计算离散傅里叶变换(discrete fourier transform,dft)时常采用快速傅里叶变换(fast fourier transform,fft),用以提高计算速度和减少硬件(内存)资源的消耗。当计算离散傅里叶变换的反变换(inverse discrete fourier transform,idft)时,常采用两种复用fft计算结构的快速计算方法,一种是改变蝶形运算的乘性系数,具体为:将待求idft的输入信号按照fft计算结构运算,同时将fft计算结构中的替换为最后,将fft计算结构输出的结果再除以n;另一种方法是将输入信号取共轭再计算fft,最后将fft结果反取共轭。
3.但是,若采用改变蝶形运算的乘性系数的方式计算idft,会改变fft的计算过程;若采用将输入信号取共轭再计算fft最后将fft结果反取共轭的方式计算idft,需要对输入信号做数值改变,并且,上述两种方法都会带来额外的存储或者计算开销。因此,如何在不需要改变输入信号和fft计算过程的基础上,能够同时得到输入信号的dft结果和idft结果一直是一个研究难点。


技术实现要素:

4.本发明实施例提供一种信号处理方法、装置、电子设备及可读存储介质,可以实现在不改变输入信号和fft计算过程的基础上,能够同时得到输入信号的不同离散傅里叶变换类型的结果。
5.第一方面,本发明实施例提供了一种信号处理方法,包括:
6.获取输入信号序列,并按照频域抽取快速傅里叶变换fft算法的蝶形运算结构,通过所述蝶形运算结构对输入信号序列进行处理,得到中间结果信号序列;
7.根据离散傅里叶变换类型对中间结果信号序列进行元素重排序;
8.根据离散傅里叶变换类型对重排序后的中间结果信号序列做数值修正,得到最终的输出信号。
9.第二方面,本发明实施例还提供了一种信号处理装置,该装置包括:
10.频域抽取蝶形运算模块,用于获取输入信号序列,并按照频域抽取快速傅里叶变换fft算法的蝶形运算结构,通过所述蝶形运算结构对输入信号序列进行处理,得到中间结果信号序列;
11.元素重排序模块,用于根据离散傅里叶变换类型对中间结果信号序列进行元素重排序;
12.数值修正模块,用于根据离散傅里叶变换类型对重排序后的中间结果信号序列做数值修正,得到最终的输出信号。
13.第三方面,本发明实施例还提供了一种电子设备,包括:
14.一个或多个处理器;
15.存储装置,用于存储一个或多个程序,
16.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任一实施例所述的方法。
17.第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任一实施例所述的方法。
18.本发明实施例的技术方案通过利用按频域抽取快速傅里叶变换fft算法的蝶形运算结构,对输入信号进行处理得到中间结果信号序列,再根据离散傅里叶变换类型对中间结果信号序列进行元素重排序以及数值修正,以得到最终的输出信号,能够实现在不需要改变输入信号和fft计算过程的基础上,能够同时得到输入信号的不同离散傅里叶变换类型的结果,提高了计算速率,减少了额外的计算开销。
附图说明
19.图1a是本发明实施例提供的一种信号处理方法的流程图;
20.图1b是本发明实施例提供的一种dft蝶形运算结构的示意图;
21.图1c是本发明实施例提供的一种按照频域抽取的基-2fft算法的蝶形运算结构示意图;
22.图2a是本发明实施例提供的一种优选的信号处理方法的流程图;
23.图2b是本发明实施例提供的一种信号处理流程的示意图;
24.图3是本发明实施例提供的一种信号处理装置的结构示意图;
25.图4是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
26.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
27.图1a为本发明实施例提供的一种信号处理方法的流程图,图1b是本发明实施例提供的一种dft蝶形运算结构的示意图,图1c是本发明实施例提供的一种按照频域抽取的基-2fft算法的蝶形运算结构示意图。本实施例可适用于在不改变输入信号和fft计算过程的基础上,同时得到输入信号的不同离散傅里叶变换类型的结果的情况,该方法可以由信号处理装置来执行,该装置可采用硬件和/或软件的方式实现,并一般可以集成在电子设备中。
28.如图1a所示,本发明实施例提供的一种信号处理方法包括以下具体步骤:
29.s110:获取输入信号序列,并按照频域抽取快速傅里叶变换fft算法的蝶形运算结构,通过所述蝶形运算结构对输入信号序列进行处理,得到中间结果信号序列。
30.其中,输入信号可以指对模拟信号以一定的采样率进行采样,得到的离散信号;输入信号序列可以指按输入信号的序号对输入信号进行排列所得的序列;按照频域抽取快速傅里叶变换fft算法可以是按照频域抽取基-2fft算法,也可以是按照频域抽取基-4fft算
法等常规算法;中间结果信号序列可以指经蝶形运算结构处理后所得的信号序列。
31.可以理解的是,在本发明实施例中按照频域抽取快速傅里叶变换fft算法的蝶形运算结构,由对输入信号进行变换的类型决定。示例性的,在本发明实施例中以需对输入信号进行dft为例,dft的基本原理可如下所示:
[0032][0033]
其中,x(k)为输入信号的dft变换结果,n为输入信号的采样点数,n为输入信号的序号,k为频率的次数即第k次频率,w为旋转因子,并且,具有如下性质:
[0034]
1)共轭对称性:
[0035]
2)周期性:
[0036]
3)可约性:
[0037]
通过上述性质可对dft基本原理进行如下改变:
[0038][0039]
进一步的,可以按k的奇偶将x(k)分为两部分,示例性的,以k=2r及k=2r 1为例,其中,r=0,1,...,n/2-1,则:
[0040]
[0041][0042]
综上,可以将n点x(k)的计算转换成了对x1(n)、x2(n)的n/2点dft计算。x1(n)、x2(n)本身构成的蝶形运算结构如图1b所示,其中,a=x(n),b=x(n n/2),a=x1(n),b=x2(n),与图1c所示的按照频域抽取的基-2 fft算法的蝶形运算结构相同,其中,图1c中以8点fft计算为例进行示意。因此,可以通过按照频域抽取快速傅里叶变换fft算法的蝶形运算结构,对输入信号序列进行处理,得到dft结果。
[0043]
由此,通过按照频域抽取快速傅里叶变换fft算法的蝶形运算结构,对输入信号序列进行处理,可以利用fft算法的特性提高计算速度,并且减少了硬件内存资源的消耗。
[0044]
具体的,以输入信号序列为{x(n),n=0,1,...,n-1}为例,按照频域抽取的fft算法的蝶形运算结构,计算得到的中间结果信号序列可以为{x(i),i=0,1,...,n-1},其中,n为输入信号的采样点数。
[0045]
s120:根据离散傅里叶变换类型对中间结果信号序列进行元素重排序。
[0046]
可选的,所述离散傅里叶变换类型包括:离散傅里叶正变换dft和离散傅里叶反变换idft。
[0047]
其中,元素重排序可以指将中间结果信号序列中的元素,按照离散傅里叶变换类型所需的序号排列顺序进行重新排序。示例性的,以输入信号的采样点数为8点为例,由图1c所示的按照频域抽取的基-2 fft算法的蝶形运算结构示意图可知,经上述fft算法的蝶形运算结构处理后得到的中间结果信号序列中元素的排列顺序为0、4、2、6、1、、5、3、7,不符合dft类型或idft类型的元素排列顺序,因此,需将中间结果信号序列进行元素重排序以满足离散傅里叶变换类型的要求。
[0048]
可选的,根据离散傅里叶变换类型对中间结果信号序列进行元素重排序包括:根据中间结果信号序列中元素的序号序列,确定数值比特翻转序号序列;根据数值比特翻转序号序列和离散傅里叶变换类型确定重排序的序号序列;根据重排序的序号序列对所述中间结果信号序列进行元素重排序。其中,数值比特翻转序号序列可以指将中间结果信号序列中的元素序号,按照序号序列进行比特翻转后所得的序号序列。
[0049]
在本发明实施例的一个可选的实施方式中,根据中间结果信号序列中元素的序号序列,确定数值比特翻转序号序列包括:通过将中间结果信号序列中每个元素的序号进行二进制转换,得到二进制数值;通过将所述二进制数值的比特位做高低位的翻转,得到翻转后的二进制数值;将翻转后的二进制数值转换为与所述中间结果信号序列中元素序号相同的进制,得到数值比特翻转序号序列。
[0050]
具体的,以输出结果需要的序号序列为{idx(i),i=0,1,...,n-1},其中,n为输入信号的采样点数,中间结果信号序列为{x(i),i=0,1,...,n-1},中间结果信号序列的元素序号序列为十进制序列l={l,l=0,1,...,n-1},数值比特翻转序号序列为{l
cvt
(l),l=0,1,...,n-1}为例,计算过程可以如下:首先,将l的每个元素l转换成log
2 n比特的二进制数l

,再将l

的比特位做高低位的翻转得到l

,最后,将二进制数l

转换回十进制得到序号l
cvt
(l)。示例性的,当l=10,n=512时,其计算过程是l

=000001010,l

=010100000,l
cvt
(10)=160,即当n=512时,若中间结果信号序列中某元素的序号为10,则其序号进行数值比特翻转后对应的序号为160。
[0051]
由此,通过将中间结果信号序列中各个元素的序号均进行数值比特翻转,即可实现序号自然序到逆位序的转换,以确定数值比特翻转序号序列。
[0052]
在本发明实施例的另一个可选的实施方式中,根据数值比特翻转序号序列和离散傅里叶变换类型确定重排序的序号序列,包括:当离散傅里叶变换类型为dft时,将数值比特翻转序号序列作为重排序的序号序列;当离散傅里叶变换类型为idft时,基于数值比特翻转序号序列以及dft和idft之间的转换关系确定重排序的序号序列。其中,dft和idft之间的转换关系,可以利用性质分析同一个序列y(n)的dft结果y
dft
(k)和idft结果y
idft
(l)得出,其中,k为频率的次数,l为输入信号的序号,具体过程如下所示:
[0053][0054][0055]
将变量mod(n-l,n)替换为l

得:
[0056][0057]
最终,可以得出:同一个序列y(n)的dft结果y
dft
(k)和idft结果y
idft
(l)具有
的重要关系。
[0058]
可选的,基于数值比特翻转序号序列以及dft和idft之间的转换关系确定重排序的序号序列,包括:基于如下公式确定重排序的序号序列:idx(i)=mod(n-l
cvt
(i),n),i=0,1,...,n-1,其中,idx(i)为idft对应的重排序的序号序列,l
cvt
(i)为dft对应的数值比特翻转序号序列,n为输入信号的采样点数,i为输入信号序列的序号。
[0059]
具体的,以数值比特翻转序号序列为{l
cv
t(l),l=0,1,...,n-1},重排序的序号序列为{idx(i),i=0,1,...,n-1}为例,当离散傅里叶变换类型是dft时,idx(i)=l
cvt
(i),i=0,1,...,n-1;当离散傅里叶变换类型是idft时,idx(i)=mod(n-l
cvt
(i),n),i=0,1,...,n-1,其中,n为输入信号的采样点数。
[0060]
s130:根据离散傅里叶变换类型对重排序后的中间结果信号序列做数值修正,得到最终的输出信号。
[0061]
其中,数值修正可以指将重排序后的中间结果信号序列按照离散傅里叶变换类型进行修正,以使输出信号满足对应的离散傅里叶变换类型。
[0062]
如前所述,dft和idft的公式可如下所示:
[0063][0064][0065]
其中,x(k)为输入信号的dft变换结果,x(n)为输入信号的idft变换结果,n为输入信号的采样点数,n为输入信号的序号,k为频率的次数即第k次频率,w为旋转因子,
[0066]
由上可知,dft与idft对系数的要求有所不同,因此,需根据离散傅里叶变换类型对重排序后的中间结果信号序列进行进一步的处理,以得到符合离散傅里叶变换类型的输出信号。
[0067]
在本发明实施例的一个可选的实施方式中,根据离散傅里叶变换类型对重排序后的中间结果信号序列做数值修正,得到最终的输出信号包括:当离散傅里叶变换类型为dft时,对重排序后的中间结果信号序列进行透传,输出dft结果;当离散傅里叶变换类型为idft时,将重排序后的中间结果信号序列除以n,输出idft结果,其中,n为输入信号序列的采样点数。其中,透传可以指直接将重排序后的中间结果信号序列输出,不需要对重排序后的中间结果信号序列进行任何改变。
[0068]
本发明实施例的技术方案通过利用按频域抽取快速傅里叶变换fft算法的蝶形运算结构,对输入信号进行处理得到中间结果信号序列,再根据离散傅里叶变换类型对中间结果信号序列进行元素重排序以及数值修正,以得到最终的输出信号,能够实现在不需要改变输入信号和fft计算过程的基础上,能够同时得到输入信号的不同离散傅里叶变换类型的结果,提高了计算速率,减少了额外的计算开销。
[0069]
图2a为本发明实施例提供的一种优选的信号处理方法的流程图,图2b是本发明实施例提供的一种信号处理流程的示意图。
[0070]
如图2a所示,本发明实施例提供的一种优选的信号处理方法包括以下具体步骤:
[0071]
s210:获取输入信号序列,并按照频域抽取快速傅里叶变换fft算法的蝶形运算结构,通过所述蝶形运算结构对输入信号序列进行处理,得到中间结果信号序列。
[0072]
其中,输入信号序列为{x(n),n=0,1,...,n-1},中间结果信号序列为{x(i),i=0,1,...,n-1}。
[0073]
s220:通过将中间结果信号序列中元素的十进制序号序列l={l,l=0,1,...,n-1}的每个元素l进行二进制转换,得到log
2 n比特的二进制数l


[0074]
s230:通过将l

的比特位做高低位的翻转得到l


[0075]
s240:通过将二进制数l

转换回十进制得到数值比特翻转序号序列l
cvt
(l)。
[0076]
s250:当离散傅里叶变换类型是dft时,将重排序的序号序列确定为idx(i)=l
cvt
(i),i=0,1,...,n-1;当离散傅里叶变换类型是idft时,将重排序的序号序列确定为idx(i)=mod(n-l
cvt
(i),n),i=0,1,...,n-1。
[0077]
s260:根据重排序的序号序列,依次将序号i=0,1,...,n-1的每个元素x(i)的数值覆盖至x(idx(i))处。
[0078]
s270:根据离散傅里叶变换类型对重排序后的中间结果信号序列做数值修正,当离散傅里叶变换类型为dft时,对重排序后的中间结果信号序列进行透传,输出dft结果;当离散傅里叶变换类型为idft时,将重排序后的中间结果信号序列除以n,输出idft结果,其中,n为输入信号序列的采样点数。
[0079]
本发明实施例的技术方案通过利用按频域抽取快速傅里叶变换fft算法的蝶形运算结构,再根据计算出的数值比特翻转序号序列和离散傅里叶变换类型确定重排序的序号序列,并根据重排序的序号序列对中间结果信号序列进行元素重排序,最后根据不同的离散傅里叶变换类型对得到的信号序列进行数值修正,以得到最终的输出信号,能够实现在不需要改变输入信号和fft计算过程的基础上,复用同一套频域抽取fft计算结构,只在fft输出结果上做重排序和除法即可同时完成dft和idft的计算,提高了计算速率,减少了额外的计算开销。
[0080]
图3为本发明实施例提供的一种信号处理装置的结构示意图,该装置可以执行上述各实施例中涉及到的信号处理方法。该装置可采用软件和/或硬件的方式实现,如图3所示,所述信号处理装置具体包括:频域抽取蝶形运算模块310、元素重排序模块320、数值修正模块330。
[0081]
其中,频域抽取蝶形运算模块310,用于获取输入信号序列,并按照频域抽取快速傅里叶变换fft算法的蝶形运算结构,通过所述蝶形运算结构对输入信号序列进行处理,得到中间结果信号序列;
[0082]
元素重排序模块320,用于根据离散傅里叶变换类型对中间结果信号序列进行元素重排序;
[0083]
数值修正模块330,用于根据离散傅里叶变换类型对重排序后的中间结果信号序列做数值修正,得到最终的输出信号。
[0084]
本发明实施例的技术方案通过利用按频域抽取快速傅里叶变换fft算法的蝶形运
算结构,对输入信号进行处理得到中间结果信号序列,再根据离散傅里叶变换类型对中间结果信号序列进行元素重排序以及数值修正,以得到最终的输出信号,能够实现在不需要改变输入信号和fft计算过程的基础上,能够同时得到输入信号的不同离散傅里叶变换类型的结果,提高了计算速率,减少了额外的计算开销。
[0085]
可选的,元素重排序模块320可以包括元素重排序子模块,用于根据中间结果信号序列中元素的序号序列,确定数值比特翻转序号序列;根据数值比特翻转序号序列和离散傅里叶变换类型确定重排序的序号序列;根据重排序的序号序列对所述中间结果信号序列进行元素重排序。
[0086]
可选的,元素重排序子模块可以包括数值比特翻转单元,用于通过将中间结果信号序列中每个元素的序号进行二进制转换,得到二进制数值;通过将所述二进制数值的比特位做高低位的翻转,得到翻转后的二进制数值;将翻转后的二进制数值转换为与所述中间结果信号序列中元素序号相同的进制,得到数值比特翻转序号序列。
[0087]
可选的,所述离散傅里叶变换类型包括:离散傅里叶正变换dft和离散傅里叶反变换idft。
[0088]
可选的,元素重排序子模块还可以包括序号序列确定单元,用于当离散傅里叶变换类型为dft时,将数值比特翻转序号序列作为重排序的序号序列;当离散傅里叶变换类型为idft时,基于数值比特翻转序号序列以及dft和idft之间的转换关系确定重排序的序号序列。
[0089]
可选的,序号序列确定单元具体可以用于,基于如下公式确定重排序的序号序列:idx(i)=mod(n-l
cvt
(i),n),i=0,1,...,n-1,其中,idx(i)为idft对应的重排序的序号序列,l
cvt
(i)为dft对应的数值比特翻转序号序列,n为输入信号的采样点数,i为输入信号序列的序号。
[0090]
可选的,数值修正模块330可以包括dft数值修正单元和idft数值修正单元;
[0091]
其中,dft数值修正单元,用于当离散傅里叶变换类型为dft时,对重排序后的中间结果信号序列进行透传,输出dft结果;
[0092]
idft数值修正单元,用于当离散傅里叶变换类型为idft时,将重排序后的中间结果信号序列除以n,输出idft结果,其中,n为输入信号序列的采样点数。
[0093]
本发明实施例所提供的信号处理装置可执行本发明任意实施例所提供的信号处理方法,具备执行方法相应的功能模块和有益效果。
[0094]
图4为本发明实施例提供的一种电子设备的结构示意图,如图4所示,该电子设备包括处理器410、存储器420、输入装置430和输出装置440;电子设备中处理器410的数量可以是一个或多个,图4中以一个处理器410为例;电子设备中的处理器410、存储器420、输入装置430和输出装置440可以通过总线或其他方式连接,图4中以通过总线连接为例。
[0095]
存储器420作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的信号处理方法对应的程序指令/模块(例如,信号处理装置中的频域抽取蝶形运算模块310、元素重排序模块320和数值修正模块330)。处理器410通过运行存储在存储器420中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述的信号处理方法。
[0096]
所述信号处理方法,包括:
[0097]
获取输入信号序列,并按照频域抽取快速傅里叶变换fft算法的蝶形运算结构,通过所述蝶形运算结构对输入信号序列进行处理,得到中间结果信号序列;
[0098]
根据离散傅里叶变换类型对中间结果信号序列进行元素重排序;
[0099]
根据离散傅里叶变换类型对重排序后的中间结果信号序列做数值修正,得到最终的输出信号。
[0100]
存储器420可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器420可进一步包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0101]
输入装置430可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。输出装置440可包括显示屏等显示设备。
[0102]
本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种信号处理方法,该方法包括:
[0103]
获取输入信号序列,并按照频域抽取快速傅里叶变换fft算法的蝶形运算结构,通过所述蝶形运算结构对输入信号序列进行处理,得到中间结果信号序列;
[0104]
根据离散傅里叶变换类型对中间结果信号序列进行元素重排序;
[0105]
根据离散傅里叶变换类型对重排序后的中间结果信号序列做数值修正,得到最终的输出信号。
[0106]
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的信号处理方法中的相关操作。
[0107]
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0108]
值得注意的是,上述信号处理装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0109]
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
转载请注明原文地址:https://win.8miu.com/read-950028.html

最新回复(0)