使用傅立叶变换和MATLAB滤波信号噪声

时间:2014-12-03 08:33:35

标签: matlab plot filter signals fft

因此,我已经获得了三个不同的MATLAB(我使用的是MATLAB R2014b)文件,其中包含噪声信号。我只是简单地绘制了第一部分给出的值。例如,第一个信号的图如下图所示。

enter image description here

然后,我对信号进行了傅里叶变换,并绘制了这些值,以确定噪声和信号在频谱中的位置。为了表明这一点,我在下面添加了第一个信号的情节图像。

enter image description here

最后,我应该使用基本的MATLAB命令创建一个滤波器,并从信号图中滤除噪声,然后再次对信号进行傅里叶变换并绘制结果。过滤器部分看起来像这样......

b = fir1(n,w,'type');
freqz(b,1,512);
in = filter(b,1,in);

其中n是滤波器的阶数,w是截止频率(截止频率除以采样率的一半),' type'是低/高/停止等等的影响...所以,我的问题是如何弄清楚我正在创建的过滤器的n,w和类型值应该是什么?!在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

我相信你的高频成分是 noise ,但它实际上取决于你的数据。

见这个例子,

Fs = 2000;
L = 200;
t = (0 : L - 1)/Fs;
data = chirp(t,20,.05,50) + chirp(t,500,.1,700);
subplot(411)
plot(t,data,'LineWidth',2);
title('Original Data') 
N = 2^nextpow2(L);
y = fft(data,N)/L;
f = Fs/2 * linspace(0,1,N/2+1);
subplot(412)
plot(f,abs(y(1:N/2+1)))
title('Spectrum of Original Data')
b = fir1(40,2*[1 200]/Fs); 
newd = filter(b,1,data);
subplot(413)
plot(t,newd)
title('Filtered Data')
newy = fft(newd,N)/L;
subplot(414)
plot(f,abs(newy(1:N/2+1)))
title('Spectrum of Filtered Data')

enter image description here

您可以使用b = fir1(40,2*[200 800]/Fs);进行高通滤镜。

答案 1 :(得分:1)

如果第二个图是正确的,在x轴上,我可以假设:

一个。采样频率为2000 Hz。

B中。 “噪音”是低频率。从原始信号看,您还需要过滤低频基线。

如果是这样,你需要高通滤波器,所以'type'='high'。

顺序取决于您希望过滤器的清晰度。从图中看来你可以使用'n'= 12或20。

如果低频中的峰值确实是您想要滤波的噪声,并且1000Hz x轴确实是奈奎斯特频率,则截止频率假设为大约0.1。

相关问题