CYFROWE PRZETWARZANIE
SYGNAŁÓW - projekt
Filtr FIR
Mateusz
Waligórski
Temat:
Zaprojektuj metodą próbkowania w dziedzinie
częstotliwości pasmowozaporowy, filtr typu I o
długości nieparzystej oraz symetrycznej
odpowiedzi impulsowej. Zastosuj okno prostokątne
i Kaisera. Przyjmij częstotliwość próbkowania
fp=1000, fd1=150, fd2=200, fg1=300, fg2=350,
odscylacje w paśmie zaporowym 0.001. Wykreśl:
odpowiedź impulsową, charakterystykę
amplitudową i fazową filtra w skali liniowej i
logarytmicznej W projekcie umieść informację o
podstawach teoretycznych rozważanego
zagadnienia, wykresy, schemat blokowy dowolnej
struktury filtru cyfrowego i komentarz.
Założenia projektowe
• Zastosowane okna: prostokątne i Kaisera
• Filtr typu I o długości nieparzystej oraz
symetrycznej odpowiedzi impulsowej
• Częstotliwość próbkowania fp=1000 Hz
• Częstotliwość dolna 1 fd1=150 Hz
• Częstotliwość dolna 2 fd2=200 Hz
• Częstotliwość górna 1 fg1=300 Hz
• Częstotliwość górna 2 fg2=350 Hz
• Oscylacje w paśmie zaporowym ds=0.001
• Metoda próbkowania w dziedzinie częstotliwości
Metodą próbkowania w
dziedzinie częstotliwości
Projektowanie filtrów metodą próbkowania w dziedzinie częstotliwości polega
na zadaniu N próbek charakterystyki częstotliwościowej filtru dla
unormowanych pulsacji
a następnie na obliczeniu
odpowiedzi impulsowej filtru h[n] jako odwrotnej N-punktowej dyskretnej
transformaty Fouriera ciągu H[k]=
Aby uzyskać rzeczywistą, (a)symetryczną odpowiedź impulsową h[n] dla
parzystych i nieparzystych wartości N, należy umieścić zadane wartości
charakterystyki amplitudowo-częstotliwościowej tylko w części rzeczywistej
(filtry typu I i II, symetryczne h(n)) lub części urojonej
(filtry typu III i IV, asymetryczne h(n)). Dodatkowo należy pamiętać o
tym, że nie każdy rodzaj filtra (LP, HP, BP, BS, H, D) można zaprojektować z
wybranego „prototypu” ze względu na asymetrię , czyli jej zerowanie
się w wybranych punktach.
)
(
j
e
H
,
1
,...,
2
,
1
,
0
,
/
2
N
k
N
k
k
.
1
,...,
2
,
1
,
0
),
(
|
)
(
/
2
/
2
N
k
e
H
e
H
N
k
j
N
k
j
)
(
j
e
H
)
(
j
e
H
)
(
j
e
H
Przykładowe parametry
• Oscylacje w paśmie przepustowym
dp=0.01
• Rząd filtru = 75 (wyliczony za pomocą
MATLABa)
• Reszta potrzebnych parametrów wyliczona
za pomocą MATLABa
Zastosowanie okna
Prostokątnego
• Okno Prostokątne charakteryzuje się najlepszą rozdzielczością
częstotliwościową (główny listek charakterystyki amplitudowej jest
bardzo wąski) oraz słabą dynamiką (im mniejsza jest różnica
amplitud listka głównego i listków bocznych, tym gorsza dynamika
okna)
Charakterystyka amplitudowa
Charakterystyka fazowa
(w skali liniowej)
Charakterystyka fazowa
(w skali logarytmicznej)
Odpowiedź impulsowa
• Okno Kaisera charakteryzuje się tym, że wraz ze wzrostem współczynnika
beta powoduje zawężenie okna w dziedzinie czasu oraz obniżenie poziomu
listków bocznych w dziedzinie częstotliwości. Wraz ze wzrostem długości
okna N przy ustalonym parametrze beta, powoduje zmniejszenie szerokości
listka głównego widma okna. dla beta =0 okno kaisera jest oknem
prostokatnym
Zastosowanie okna Kaisera
Charakterystyka fazowa
(w skali liniowej)
Charakterystyka amplitudowa
Charakterystyka fazowa
(w skali logarytmicznej)
Odpowiedź impulsowa
Schemat blokowy
⁞
Wylistowany kod programu
(m.plik)
clear all;
typ= 1;(' filtr typu( 1. pasmowoprzepustowy półpasmowy):'); %rodzaj filtru
okno = input('Podaj rodzaj okna (1. okno Kaisera, 2. okno prostokątne) : ');
%rodzaj zastosowanego okna
fpr= 1000; %częstotliwość próbkowania
fd1=150; %częstotliwość dolna 1
fd2=200; %częstotliwość dolna 2
fg1=300; % częstotliwość górna 1
fg2=350; %częstotliwość górna 2
dp=0.01; %oscylacje w paśmie przepustowym
ds=0.001; %oscylacje w paśmie zaporowym
typ='bs';
%parametry okna Kaisera
if (typ== 'bs')
df1=fd2-fd1;
df2=fg2-fg1;
df=min(df1,df2);
f1=(fd1+(df/2));
f2=(fg2-(df/2));
w1=2*pi*f1;
w2=2*pi*f2;
end
d=min(dp,ds);
A=-20*log10(d);
Wylistowany kod programu
(m.plik)
%Wyliczenie beta
if (A>=50) beta=0.1102*(A-8.7); end
if (A>21 & A<50) beta=(0.5842*(A-21)^0.4)+4.07886*(A-21); end
if (A<=21) beta=0; end
if (A>21) D=(A-7.95)/14.36; end
if (A<=21) D=0.922;end
N=(D*fpr/df)+1;
N=ceil(N);
if (rem(N,2)==0) N=N+1; end
%wyliczenie zer i jedynek
li1=ceil(2*(f1*(N/2)+1)/fpr);
li2=ceil(2*(f2*(N/2)+1)/fpr);
%wygenerowanie okna
w11 = kaiser(N,beta); %zastosowanie okna Kaisera
w22 = rectwin(N); %zastosowanie okna prostok¹tnego
Hre= [1 ones(1,li1) zeros(1,li2-li1) ones(1,(2*(li1-2))) zeros(1,li2-li1) ones(1,li1) ];
%kszta³towanie idealnej charakterystyki częstotliwościowej
Him= zeros(1,N);
H=Hre+ j*Him;
hz=ifft(H); %obliczanie odwrotnej transformaty DFT
h=[hz(((N/2)):N) hz(1:(N/2))]; %przesunięcie kołowej odpowiedzi impulsowej
Wylistowany kod programu
(m.plik)
if (okno== 1) %warunki ...
fvtool(h.*w11.'); pause
end
if (okno== 2)
fvtool(h.*w22.'); pause
end
pause
Hd= dfilt.dffirt(h); %Direct-form FIR transposed
realizemdl(Hd,'optimizezeros','on','blockname','Direct-form FIR
transposed');
Literatura
- Wykład z Podstaw Cyfrowego Przetwarzania Sygnałów ;-)
(wiadomo najważniejszy)
- Zieliński P.T.: Od teorii do cyfrowego przetwarzania sygnałów,
AGH, Kraków 2002
- A.Łuksza: Podstawy cyfrowego przetwarzania sygnałów, AM,
Gdynia 2008