长时间序列的卷积运算加速方法

时域卷积

我们对长时间序列做卷积运算时通常伴随着较大的运算量,本文介绍了一种基于信号分段和FFT变换的时间卷积方法,可以有效提高运算效率。

  1. 时域卷积原理
    假设卷积公示为y(n)=x(n)h(n)\bm{y}(n) = \bm{x}(n) * \bm{h}(n),其中x(n)=[x1,x2,...,xN]T,h(n)=[h1,h2,...,hM]T\bm{x}(n)=[x_1,x_2,...,x_N]^T, \bm{h}(n) = [h_1,h_2,...,h_M]^T,则y(n)\bm{y}(n)的长度为N+M1N+M-1,卷积过程的图解为:

数字信号处理DSP基础篇(一)
2. 时域卷积原理
该过程包括M(N+M1)M*(N+M-1)次乘法,M(N+M1)M*(N+M-1)次加法。

频域分段卷积

  1. 频域卷积原理
    思路:对长序列x(n)\bm{x}(n)进行分段处理,对每一段序列xi(n)\bm{x}^i(n)进行FFT变换得到Xi(k)\bm{X}^i(k),其中ii表示第ii段。将Xi(k)\bm{X}^i(k)h(n)\bm{h}(n)的FFT变换结果相乘得到Yi(k)\bm{Y}^i(k),接着对Yi(k)\bm{Y}^i(k)进行反傅里叶变换yi(n)\bm{y}^i(n),最后将yi(n)\bm{y}^i(n)进行整合重构。整个过程的图解为:
    数字信号处理DSP基础篇(一)
    要点:
  • Nfft应当满足Nfft=Nx+Nh1Nfft = N_x + N_h - 1,因为分段信号xi(n)\bm{x}^i(n)h(n)\bm{h}(n)的卷积结果长度为Nx+Nh1N_x+N_h-1,如果Nfft<Nx+Nh1Nfft < N_x + N_h - 1,会出现混叠的现象,无法恢复正确的信号yi(n)\bm{y}^i(n)
  1. 运算量
    由于NN点FFT的运算量为log2N2/2\log_2 N^2/2次复数乘法,log2N2\log_2 N^2次复数加法,所以分段频域卷积的计算量为:
    :Nfrm(3log2Nfft2/2+Nx):Nfrm(3log2Nfft2) 复数乘法:N_{frm}*(3*\log_2 N_{fft}^2/2 + N_x) \\ 复数加法:N_{frm}*(3*\log_2 N_{fft}^2)
    其中Nfrm=N/NxN_{frm} = \lfloor N/N_x \rfloor。所以,频域分段卷积比时域卷积的运算量小许多

相关文章:

  • 2022-12-23
  • 2021-12-23
  • 2021-08-23
  • 2021-12-23
  • 2021-12-27
  • 2021-11-06
  • 2021-08-24
猜你喜欢
  • 2021-11-17
  • 2021-09-10
  • 2021-09-20
  • 2021-04-19
  • 2022-01-20
  • 2021-12-13
  • 2021-07-20
相关资源
相似解决方案