【问题标题】:Hamming Filter in Frequency and Spatial Domain频域和空间域中的汉明滤波器
【发布时间】: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


【解决方案1】:

根据您在space 上发布的您称之为“吉布斯”的数据,这些数据是频率上的高频分量。当您将汉明窗乘以频率时,实际上您正在平滑那些更高的频率。它们位于复杂数组 k1 的边界(负和正)中。

下面是当你制作k2 = wk.*k1时会发生什么;

这就是你所谓的空间“吉布斯”消失的原因。

这不是对 time|space 上常用的汉明窗的常规使用,以在对 time|space 上的信号、函数或滤波器内核进行削波和采样时降低 Gibb 的导通频率。

要在space 中重现它,您必须设计一个非常平滑的低通滤波器,以在频率上给出汉明窗响应来进行卷积。我不记得汉明窗的逆变换,但您可以使用高斯滤波器。

顺便说一句,wx = ifft(ifftshift(wk)); 给出的 wx 相对于其最大值不对称。

【讨论】:

    猜你喜欢
    • 2011-09-20
    • 2014-12-02
    • 2015-06-08
    • 2014-03-20
    • 2019-11-08
    • 2019-02-03
    • 1970-01-01
    • 2013-12-05
    • 2013-12-12
    相关资源
    最近更新 更多