循环卷积和线性卷积的关系
一般信号处理滤波器:时域数据 与 滤波器系数的线性卷积,但卷积的运算量比较大,所以用频域的相乘来替代时域卷积,而频域的相乘等于时域循环卷积,所以要有一个循环卷积和线性卷积转换的过程,
如下matlab例子
x = [3 2 1 2 5];
y = [7 -1 8 5 1];
N = length(x) + length(y) - 1;
x1 = [x zeros(1,N - length(x))];
y1 = [y zeros(1,N - length(y))];
c1 = ifft(fft(x1).*fft(y1));%频域的padding点乘
c2 = conv(x,y);%时域的线性卷积
c3 = ifft(fft(x).*fft(y));
c4 = cconv(x,y,length(x));
fprintf("result\n");
c1
c2
c3
c4
结果:
result
c1 =
21.0000 11.0000 29.0000 44.0000 54.0000 18.0000 51.0000 27.0000 5.0000
c2 =
21 11 29 44 54 18 51 27 5
c3 =
39 62 56 49 54
c4 =
39 62 56 49 54