我正在尝试使用高斯函数对信号进行滤波。
这是我想出来的代码。
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);然而,当我这样做时,滤波信号的振幅会放大。这是正常的吗?如果不是,我做错了什么?
发布于 2021-02-20 03:11:47
由于滤波器未归一化,因此信号被放大。您可以使用plot(abs(gh)) (或更好的plot(fftshift(abs(gh))))检查它的频率响应是否具有很大的幅度。
为了避免这种情况,你应该对过滤器进行标准化。有几种可能的方法可以做到这一点。例如,为了实现零频率使用的单位增益
g = g/sum(g);https://stackoverflow.com/questions/66283109
复制相似问题