小编RJB*_*RJB的帖子

Ron Mayer FFT 卷积算法

有人知道有关 Mayer FFT 实现的任何信息吗(我不必花大量时间来研究代码)?

我正在尝试执行卷积,并且 ifft 似乎产生了我所说的“镜像”输出。换句话说,我的内核+信号长度限制为 N/2,并且无论占用 n=0...N/2 ,都会镜像 n=N...N/2 。就负频率而言,它看起来有点像我对 FFT 的期望……只不过它就像负时间中的一面镜子。

这是我的卷积代码:

   void convolve(struct cxType* data,  struct cxType* kernel, int size) 
    {
    int i,j;
    int wrksz = size;
    float gain = 1.0f/((float) wrksz);


    mayer_fft(wrksz, data->re, data->im);
    mayer_fft(wrksz, kernel->re, kernel->im);

    for(i=0;i<wrksz;i++)
    {
    data->re[i]*=kernel->re[i]*gain;
    data->im[i]*=kernel->im[i]*gain;
    }

    mayer_ifft(wrksz, data->re, data->im);
}
Run Code Online (Sandbox Code Playgroud)

使用 gnu Octave(对于不熟悉的人来说,MATLAB 语法等效)执行基本相同的操作会产生预期的结果,包括允许我在信号输出中占用 M+N-1:

fs=48000;
Ts = 1/fs;
NN =  1024
sincsz = floor(NN/4);
sigstart = floor(NN/16);
sigend = floor(NN/2);
dpi=2*pi;

%window func
tau=(1:sincsz)/sncsz;
window=0.5*(1.0 - cos(dpi*tau));
%plot(tau,window) …
Run Code Online (Sandbox Code Playgroud)

fft convolution

2
推荐指数
1
解决办法
924
查看次数

标签 统计

convolution ×1

fft ×1