Filtern von 50 Hz mit einem Notch-Filter in MATLAB

  • Ich habe viel darüber gelesen, konnte aber nicht alles erfolgreich zusammensetzen, also suche ich Hilfe.

    Ich muss 50 Hz aus einem Signal herausfiltern. Es sieht so aus, als wären die besten Optionen entweder ein Notch-Filter oder ein LMS-Filter, aber ich habe keine Kopie des Rauschens, daher scheint ein Notch-Filter die beste Wahl zu sein.

    Ich brauche keine normalisierten Frequenzen, da ich die Abtastfrequenz (16 kHz) kenne und die Dauer 30 Sekunden beträgt. Die Bandbreite kann ziemlich eng sein, 49,5 Hz ~ 50,5 Hz sollte in Ordnung sein.

    Anscheinend muss ich eine Kombination aus filter und iirnotch verwenden, aber ich Ich bin nicht ganz sicher, wie.

    Wenn jemand dies alles zusammenbringen kann, würde ich es sehr schätzen. Danke.

    06 January 2012
    J Wynia
2 answers
  • Ich bin mir nicht sicher, was Iirnotch macht, aber so entwerfen Sie den Notch-Filter manuell.

     fs = 20000;             %#sampling rate
    f0 = 50;                %#notch frequency
    fn = fs/2;              %#Nyquist frequency
    freqRatio = f0/fn;      %#ratio of notch freq. to Nyquist freq.
    
    notchWidth = 0.1;       %#width of the notch
    
    #%Compute zeros
    notchZeros = [exp( sqrt(-1)*pi*freqRatio ), exp( -sqrt(-1)*pi*freqRatio )];
    
    %#Compute poles
    notchPoles = (1-notchWidth) * notchZeros;
    
    figure;
    zplane(notchZeros.', notchPoles.');
    
    b = poly( notchZeros ); %# Get moving average filter coefficients
    a = poly( notchPoles ); %# Get autoregressive filter coefficients
    
    figure;
    freqz(b,a,32000,fs)
    
    %#filter signal x
    y = filter(b,a,x);
     
    30 April 2016
    PhononDeepak kumar Jha
  • Sie können einfach help iirnotch eingeben und das folgende Beispiel sehen:

     % Design a filter with a Q-factor of Q=35 to remove a 60 Hz tone from 
    % system running at 300 Hz.
    Wo = 60/(300/2);  BW = Wo/35;
    [b,a] = iirnotch(Wo,BW);  
     

    Wenn Sie Ersetzen Sie die 60 durch 50 Hz und tun Sie dann:

     Y = filter(b,a,X)
     

    Es sollte funktionieren (mit X Ihre Daten)

    06 January 2012