logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Projektowanie filtrów metodą okien czasowych.

AlaSaleta 01 Paź 2010 21:46 2569 0
REKLAMA
  • #1 8573297
    AlaSaleta
    Poziom 1  
    Analizuje programy zawarte w książce "Cyfrowe przetwarzanie sygnałów" Zielińskiego.

    Moje pytanie związane jest z metodą okien. Chciałabym uzyskać przyczynowy filtr Hilberta przesuwający w fazie o 90 stopni.
    W metodzie tej wyznacza się odpowiedź impulsową filtru, wymnaża przez funkcję okna czasowego, przesuwa o M próbek w prawo na osi n i pobiera 2M+1 próbek. Długość filtru 2M+1. Pozwala to na uzyskanie filtru przyczynowego.

    Poniżej zamieszkam kod programu.
    clear all;
    M=20;
    typ=1; % 1 hilberta  %2 rozniczkujacy
    N=2*M+1; 
    n=1:M;
    % wygeneruj teoretyczne odpowiedzi impulsowe
    if (typ==1)h=(2/pi)*sin(pi*n/2).^2./n; end % polowa odpowiedzi impulsowej filtru
    if (typ==2) h= cos(pi*n)./n; end
    if(typ==1 | type==2)
    h= [-h(M:-1:1) 0 h(1:M)];
    end
    
    % wymnożenie z funkcją okna
    w=blackman(N);
    w=w';
    hw=h.*w;
    
    
    
    % oblicz widmo
    % dla filtra nieprzyczynowego
    m=-M:1:M;
    % dla filtru przyczynowego
    %m=0:N-1;
    
    NF=500;
    fn=0.5*(1:NF-1)/NF;
    for k=1:NF-1
        H(k)=sum(h.*exp(-j*2*pi*fn(k)*m));
        HW(k)=sum(hw.*exp(-j*2*pi*fn(k)*m)); 
    end
    
    stem(m,h); grid; title('h(n)'); xlabel('n'); pause
    stem(m,hw); grid;title('hw(n)'); xlabel('n'); pause
    plot(fn,abs(H)); grid; title('|H(fn)|'); xlabel('f norm'); pause
    plot(fn,abs(HW)); grid; title('|HW(fn)|'); xlabel('f norm'); pause
    plot(fn,rad2deg(unwrap(angle(H)))); grid; title('kąt H(fn)[rd]'); xlabel('f norm'); pause
    plot(fn,rad2deg(unwrap(angle(HW)))); grid; title('kąt HW(fn)[rd]'); xlabel('f norm'); pause
    


    Dla filtru nieprzyczynowego faza filtru Hilberta jest stała i wynosi -90stopni. Jeżeli wybierze się opcję filtru nieprzyczynowego otrzymuje się inny wykres charakterystyki fazowej. Dlaczego? Co zrobić, żeby uzyskać przyczynowy filtr Hilberta przesuwający w fazie o 90 stopni?

    Z góry dziekuję za odpowiedź.
  • REKLAMA
REKLAMA