基于傅立叶变换和MATLAB的信号噪声滤波
所以,我得到了三个不同的MATLAB(我使用的是MatlabR2014B)文件,其中的信号含有噪声。我只是简单地绘制了第一部分给出的值。例如,第一个信号的曲线图如下所示 然后,我对信号进行傅里叶变换,并绘制这些值,以确定噪声和信号在频谱中的位置。为了显示这一点,我在下面添加了第一个信号的绘图图像 最后,我将使用基本的MATLAB命令创建一个滤波器,将信号图中的噪声过滤掉,然后再次对信号进行傅里叶变换并绘制结果。过滤器部分看起来像这样基于傅立叶变换和MATLAB的信号噪声滤波,matlab,plot,filter,signals,fft,Matlab,Plot,Filter,Signals,Fft,所以,我得到了三个不同的MATLAB(我使用的是MatlabR2014B)文件,其中的信号含有噪声。我只是简单地绘制了第一部分给出的值。例如,第一个信号的曲线图如下所示 然后,我对信号进行傅里叶变换,并绘制这些值,以确定噪声和信号在频谱中的位置。为了显示这一点,我在下面添加了第一个信号的绘图图像 最后,我将使用基本的MATLAB命令创建一个滤波器,将信号图中的噪声过滤掉,然后再次对信号进行傅里叶变换并绘制结果。过滤器部分看起来像这样 b = fir1(n,w,'type'); freqz(b
b = fir1(n,w,'type');
freqz(b,1,512);
in = filter(b,1,in);
其中n是滤波器的阶数,w是截止频率(截止频率除以采样率的一半),而“类型”是指低/高/停止/等的影响。。。所以,我的问题是,我如何计算我正在创建的过滤器的n、w和type值应该是什么?!提前感谢您的帮助 如果第二个图是正确的,在x轴上,我可以假设: A.采样频率为2000 Hz B.“噪音”处于低频。从原始信号来看,似乎还需要对低频基线进行滤波 如果是这样,您需要高通滤波器,所以“type”=“high” 顺序取决于您希望过滤的清晰度。从图上看,似乎可以使用'n'=12或20
如果低频中的峰值确实是要过滤的噪声,并且如果1000Hz的x轴确实是奈奎斯特频率,则截止频率假设为0.1左右。我相信高频分量是噪声,但它实际上取决于数据 看这个例子
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')
您可以使用
b=fir1(40,2*[200800]/Fs)代码>用于高通滤波器。啊,所以我完全理解你所说的一切,除了截止频率。它需要精确到0.1。现在我有这个,b=fir1(20100/(2000/2),“高”);freqz(b,1512);in=过滤器(b,1,in)我只是不明白截止频率到底应该是什么。当我使用这段代码时,它几乎给了我一个平滑的曲线图。这是否足够过滤?我不知道。看看你的时间信号——它过滤得足够好吗?过滤太多了吗?这取决于你的要求。。。