滤波后波形图不正确

时间:2014-03-21 22:52:05

标签: matlab plot filtering signal-processing fft

我有一个电流信号,我的任务是提取前5个谐波并显示与这些谐波相对应的波形。

这是固有信号的fft,因此您可以看到波形的位置及其相对高度:

enter image description here

(忽视y量表 - 它还没有被纠正)

所以这就是我为解决这个问题所做的:

我制作了五个四阶黄油带通滤波器来提取每个谐波

orderN = 4;

% Fundamental frequency 
passband1 = [40 60]/(samplingRate/2);
[b,a] = butter(orderN, passband1, 'bandpass');
I1 = filter(b,a,I);

subplot 511
plot(I1,'r');

% Second harmonic
passband2 = [98 102]/(samplingRate/2);
[b2,a2] = butter(orderN, passband2, 'bandpass');
I2 = filter(b2,a2,I);

subplot 512
plot(I2,'b');

% Third Harmonic
passband3 = [146 154]/(samplingRate/2);
[b3,a3] = butter(orderN, passband3, 'bandpass');
I3 = filter(b3,a3,I);

subplot 513
plot(I3,'g');

% Fourth Harmonic
passband4 = [190 210]/(samplingRate/2);
[b4,a4] = butter(orderN, passband4, 'bandpass');
I4 = filter(b4,a4,I);

subplot 514
plot(I4,'m');

% Fifth Harmonic
passband5 = [240 260]/(samplingRate/2);
[b5,a5] = butter(orderN, passband5, 'bandpass');
I5 = filter(b5,a5,I);

subplot 515
plot(I5,'k');

出于某种奇怪的原因,这是我得到的情节:

enter image description here

我无法解释情节中的那些颠簸。 为什么那些波形幅度会增加和减少?

以下是它应该是什么样子

enter image description here

(请忽略尺度)

如何让我的滤镜输出看起来像第二张图片?

请帮忙

3 个答案:

答案 0 :(得分:0)

我认为有两件事:

如果我没记错的话,对于通带和阻带,MATLAB为您设计2 * n阶滤波器。输入:帮助黄油并验证。

第二件事:

当你应用过滤器时,会发生两件事:

第一个是瞬态响应,就像负指数一样 第二个是稳态响应,即瞬态死亡之后。

如果你观察你的信号,他们从0开始越多,他们变得越“稳定”。就好像你的波浪上有一个指数垂死的正弦波。

还有一件事: 您的FFT将x轴显示为“Hz”。如果这是正确的,请小心您的滤镜设计。

我相信你过去了,而不是f。你正在通过2 * pi * f。再一次,帮助黄油应该指定。

所以你的过滤器已关闭,“尖峰”波浪正在被过滤,只是需要时间让它们死亡。

答案 1 :(得分:0)

好的伙计,我得到了它的工作。我绘制了每个滤波信号(I1,I2,I3,I4,I5)的FFT,并看到了这一点:

http://i.imgur.com/WNx8ZoS.jpg

此图表显示滤波已经过滤,并且每个谐波都已滤除。

现在每个谐波都是一个正弦波。所以我所做的就是从fft图中找出每个谐波的幅度以及它存在的频率并使其成为一个sin波

现在我得到了正确的情节

答案 2 :(得分:0)

这可能是由于FFT窗口化造成的。 http://en.wikipedia.org/wiki/Window_function