【发布时间】:2018-01-18 16:47:54
【问题描述】:
我想通过在 MATLAB 中对一维信号应用汉明滤波器来去除一维信号中的吉布斯伪影。
我拥有的是k1,它是频域中的信号。我可以通过在k1 上应用 DFT 来获得时域信号:
s1 = ifft(ifftshift(k1));
此信号具有吉布斯伪影。现在,我想通过 (A) 将 Hamming 滤波器与频域中的 k1 相乘和 (B) 将 Hamming 滤波器的 IFFT 与空间域中的 s1 进行卷积来删除它。我期望这两个输出相同:
% (A) Multiplying Hamming filter to `k1`
n = size(k1,2);
wk = hamming(n,'symmetric')';
k2 = wk.*k1;
s2 = ifft(ifftshift(k2));
% (B) Convolving IFFT of Hamming filter with `s1`
wx = ifft(ifftshift(wk));
s3 = conv(s1,wx,'same');
(A) 的结果s2 似乎是正确的,因为信号看起来很模糊并且吉布斯伪影消失了。但是,(B) 的结果s3 完全不同且不正确。 (B) 中缺少什么? (如果需要请从this link下载k1.mat。)
【问题讨论】:
-
循环与线性卷积?
标签: matlab signal-processing fft ifft hamming-window