having a problem using an iir notch filter

hello everyone,
i want to filter 50 Hz sinus and therefore i implemented a notch filter such as shown in the help. i don'w know why it doesn't work. does everyone have a clue ? see also the attached file 'debuging' this is the program :
if true
% code
end
*t=0:0.0005:0.5; % fs=2000Hz
x=sin(2*pi*50*t)+sin(2*pi*70*t);
figure;
plot(t,x);
title('Sum of sinuses - of 50Hz & of 70Hz ');
% implementation of the notch filter
wo = 50/(2000/2); bw = wo/35;
[b,a] = iirnotch(wo,bw);
fvtool(b,a);
%signal after filterization
figure;
g=filter(b,a,x);
plot(t,g);
title('The signal after removing its 50 Hz sinus');
%figure of 70 Hz for comarison to what i need to get
figure;
y=sin(2*pi*70*t);
plot(t,y);
title('A 70 Hz sinus - for comparison');*
thanks a lot

 Réponse acceptée

Wayne King
Wayne King le 5 Jan 2014
Kobi, did you also supply the optional Ab input argument as I did?
nyquist = 2000/2;
w0 = 50/nyquist;
bw = w0/20;
[b,a] = iirnotch(w0,bw,20);
y = filtfilt(b,a,x);
plot(t,y);
From your output it does not appear that you did.
If you execute the above, you should see that is pretty much a clean 70-Hz sinewave with a reduction in amplitude.

Plus de réponses (3)

Wayne King
Wayne King le 4 Jan 2014
It is working, you just need to tweak the parameters a bit to get better results.
nyquist = 2000/2;
w0 = 50/nyquist;
bw = w0/20;
[b,a] = iirnotch(w0,bw,20);
y = filter(b,a,x);
ydft = fft(y);
plot(abs(ydft))
kobi
kobi le 4 Jan 2014

0 votes

hi and thanks for the immidiate answer. I saw that you changed the Q factor. What its affect about ? in addition, when i changed the number to 20 (as you advised me) i didn't get a real 70 Hz sinus as you can see in the attached pictures.... What can i do to make it exactly the same ? what parameter should i need to change ?
thanks a lot!
kobi
kobi le 6 Jan 2014

0 votes

O.K
I changed this part of code to yours and as you told me, i'v got a 70Hz sinwave with a reduction.
some question about the plot after filtering :
1. Does the reduction comes from the filter itself ? how can i solve it ? by multyplying it to the gain i need to get (1 - -1) ?
2. Why am I getting in the begining of the filtered plot something wierd (0-0.025 sec) ?

Catégories

En savoir plus sur MATLAB dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by