【问题标题】:Gaussian filtering using Gaussian function in matlab在matlab中使用高斯函数进行高斯滤波
【发布时间】:2021-05-22 18:31:04
【问题描述】:

我正在尝试使用高斯函数过滤信号。

这是我想出的代码。

clear all
x = -1:0.001:1;
y = sin(2*pi*x/0.4) + sin(2*pi*x/0.1);

yh = fft(y);
plot(abs(yh))
del = 0.1;
g = (6/(pi*del^2))^0.5*exp(-6*x.^2./del^2);
gh = fft(g);

yfilter = ifft(2*pi*yh.*gh);
plot(x,y)
hold on
plot(x,yfilter);

但是,当我这样做时,过滤信号的幅度会放大。这是正常的吗?如果不是我做错了什么?

【问题讨论】:

    标签: matlab filter fft gaussian


    【解决方案1】:

    信号被放大,因为滤波器未归一化。你可以通过plot(abs(gh))(或者更好的plot(fftshift(abs(gh))))检查它的频率响应有很大的幅度。

    为避免这种情况,您应该规范化过滤器。有几种可能的方法来做到这一点。例如,要实现零频率使用的单位增益

    g = g/sum(g);
    

    【讨论】:

      猜你喜欢
      • 2013-03-29
      • 2011-02-15
      • 2017-04-20
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多