比较 FFT radix-2 和卷积的算术复杂度

信息处理 离散信号 自由度 卷积
2022-01-31 02:25:57

假设我们有一个离散线性时不变系统,并且我们有一个长度为 N=50 的实信号作为系统的输入。x[n]

系统的脉冲响应也被认为是长度 M=10 的实信号。h[n]

我们要计算输出信号y[n]

有两种方法可以做到这一点:我们可以在时域中对信号进行卷积,或者使用 FFT radix-2 并在频域上工作。x[n]h[n]

我想比较这两种方法在实数乘法上的算术复杂度。我知道卷积的算术复杂度是因为实数乘法才能计算但是,我对 FFT-radix 2 有点困惑。NMNMy[n]

我知道它需要μ(Ν)=N2log2N复数乘法。每个复数乘法都等价于 4 个实数乘法。y[n]需要多少次实数乘法我是否必须先使用\frac{50}{2}\log _{2}50 + \frac{10}{2}\log _{2}10 real计算X[k]H[k]乘法?如果是这样,我该如何继续?502log250+102log210

1个回答

假设输入信号的长度为样本,滤波器的长度为样本,那么输出(通过线性转换)的长度为样本。x[n]N=50h[n]M=10y[n]L=N+M1=59

如果使用时域卷积,那么真实 MACS 的数量可以看作是 NM=50×10=500

如果要使用 radix-2 FFT 来实现线性卷积结果,则应为 FFT 选择长度您将: 1-通过两个转换为,2- 将结果相乘得到和 3-点的逆 FFT以获得输出R=64x[n]h[n]X[k]H[k]RY[k]=X[k]H[k]RY[k]y[n]

每个点 FFT(和 IFFT)需要大约复 MAC。一个复数 MAC 是 4 个真实 MAC,因此这相当于真实 MAC。两个 FFT 和一个逆 FFT 总共需要大约真实 MAC。中间乘法还需要真实 MAC,因此基于 FFT 的实现总共需要个真实 MAC。R12Rlog2(R)2 R log2(R)=128log2(64)=128×6=7683×768=23044×R=2562560

所以在这种情况下,时域卷积比基于 FFT 的实现更有效。