Jelek és rendszerek Gyakorlat_ A gyakorlat célja a szűrők viselkedésének elemzése, vizsgálata 2..@. Készítsen diszkrétidejű felüláteresztő szűrőt az alábbiak alapján: Fs = 48; % Sampling Frequency N = 2; % Order // változtatható Fstop = 96; % Stopband Frequency Fpass = 2; % Passband Frequency Wstop = ; % Stopband Weight Wpass = ; % Passband Weight dens = 2; % Density Factor y a kimenete. M N [ n] = b [ ] [ ] k x n k ak y n k k= k=., ahol [ n] x a rendszer bemenete, [ n] y pedig a Végezzen változtatásokat, a szűrő fokszámát és a tervezési módszereket is változtassa. Hogyan hatnak ezek a változtatások az amplitúdó és a fázis karakterisztikára, valamint a csoport késésre? Hasonlítsa össze az egyes szűrők válaszát egy adott bemenetre. Adja meg a kimenetek közötti hibajel energiáját. Megoldás: A feladatunk egy felülátresztő FIR szűrő megtervezése a fenti paraméterek alapján. Mivel FIR (Finite Impulse Response) szűrőről van szó, így a fentiekben megadott egyenletben, az a k=, minden k -ra, viszont az a =, azaz a FIR szűrő esetében a kimenetet csak a korábbi bemenet határozzák meg, és nem vesszük figyelembe a korábbi kimeneteket. Az IIR (Infinite Impulse Response) szűrő esetében, pedig van olyan a k, k érték, amely -tól különböző. Ebben az esetben tehát a kimenet meghatározásához figyelembe vesszük a korábbi bemenetek mellett a korábbi kimeneteket is. A szűrő megtervezéséhez indítsuk el az fdatool-t és állítsuk be a fentiekben megadott paramétereket. Gyakorlat_
Jelek és rendszerek Gyakorlat_ Ha beállítottuk a paramétereket, akkor megtervezhetjük a szűrőt. Az így megtervezett szűrő esetében az Analysis->Magnitude and Phase Responses menüpontra kattintva megnézhetjük az amplitúdó és fáziskarakterisztikát. 3.246 Magnitude (db) and Phase Responses 7.587-4.3 3.3652 Magnitude (db) -.8464-9.3926 -.8566-5.784 Phase (radians) -26.9388-9.32-34.485 5 5 2 Az Analysis->Grup Delay Response-ra kattintva, pedig megnézhetjük a szűrő csoportkésleltetését..5.4.3 Group Delay -3.522 Group delay (in samples).2. 9.9 9.8 9.7 9.6 9.5 5 5 2 Látható, hogy a szűrő csoportkésleltetése. Készítsük el a szűrőhöz tartozó m- file-t, a File->Generate M-file menüpont segítségével. Ezt mentsük el, mert majd később az összehasonlításoknál fel fogjuk használni ezt. A következő feladat, hogy válasszunk másik tervezési módszert. Legyen ez a Least-squares módszer. Gyakorlat_ 2
Jelek és rendszerek Gyakorlat_ Itt is vizsgáljuk meg és hasonlítsuk össze az előbb kapott eredményekkel az amplitúdó és fáziskarakterisztikát, valamint nézzük meg a szűrő csoportkésleltetését. 3.262 Magnitude (db) and Phase Responses 8.347-6.962 3.798 Magnitude (db) -7.42-27.384 -.5384-4.875 Phase (radians) -37.4966-9.26-47.6747 5 5 2-3.548.5 Group Delay.4.3 Group delay (in samples).2. 9.9 9.8 9.7 9.6 9.5 5 5 2 Látható, hogy a tervezési módszertől függ a kapott amplitúdó és fáziskarakterisztika, de a csoportkésleltetés nem változik. Itt is készítsük el a szűrőhöz tartozó m-file-t, és mentsük el. Állítsuk vissza a tervezési módszert a korábbi Eqiripple módszerre, és változtassuk meg a szűrő fokszámát 4-re. A szűrő fokszáma azt határozza meg, hogy hány darab korábbi bemenetet veszünk figyelembe. Gyakorlat_ 3
Jelek és rendszerek Gyakorlat_ Nézzük meg ennél a szűrőnél is az amplitúdó és fáziskarakterisztikát, valamint a csoportkésleltetést. 3.7427 Magnitude (db) and Phase Responses 8.439-7.3937.844 Magnitude (db) -8.53-29.6665-8.263-6.65 Phase (radians) -4.829-24.9579-5.9394 5 5 2-33.354 2.5 Group Delay 2.4 2.3 Group delay (in samples) 2.2 2. 2 9.9 9.8 9.7 9.6 9.5 5 5 2 Látható, hogy a szűrő fokszámának megváltoztatása nemcsak az amplitúdó és fáziskarakterisztikát módosítja, hanem a szűrő csoportkésleltetését is. Ebben az esetben a csoportkésleltetés 2 lett. Nézzük meg a három különböző paraméterrel megtervezett szűrő F pass és F stop frekvenciájú szinuszos gerjesztésre adott válaszát, majd nézzük meg a kimenetek közötti hibajel energiáját. A feladat megoldásához szükséges kód: % Equiripple Highpass filter designed using the FIRPM function. % All frequency values are in Hz. Fs = 48; % Sampling Frequency Gyakorlat_ 4
Jelek és rendszerek Gyakorlat_ N = 2; % Order Fstop = 96; % Stopband Frequency Fpass = 2; % Passband Frequency Wstop = ; % Stopband Weight Wpass = ; % Passband Weight dens = 2; % Density Factor % Calculate the coefficients using the FIRPM function. b = firpm(n, [ Fstop Fpass Fs/2]/(Fs/2), [ ], [Wstop Wpass],... {dens}); Hd = dfilt.dffir(b); % FIR least-squares Highpass filter designed using the FIRLS function. % All frequency values are in Hz. Fs = 48; % Sampling Frequency N = 2; % Order Fstop = 96; % Stopband Frequency Fpass = 2; % Passband Frequency Wstop = ; % Stopband Weight Wpass = ; % Passband Weight % Calculate the coefficients using the FIRLS function. b = firls(n, [ Fstop Fpass Fs/2]/(Fs/2), [ ], [Wstop Wpass]); Hd2 = dfilt.dffir(b); % Equiripple Highpass filter designed using the FIRPM function. % All frequency values are in Hz. Fs = 48; % Sampling Frequency N = 4; % Order Fstop = 96; % Stopband Frequency Fpass = 2; % Passband Frequency Wstop = ; % Stopband Weight Wpass = ; % Passband Weight dens = 2; % Density Factor % Calculate the coefficients using the FIRPM function. b = firpm(n, [ Fstop Fpass Fs/2]/(Fs/2), [ ], [Wstop Wpass],... {dens}); Hd3 = dfilt.dffir(b); % Teszteljük a megtervezett szűrőt: t=:/fs:2e-3; x=sin(2*pi*fpass *t); x2=sin(2*pi* Fstop *t); a=; % Első szűrő tesztelése b=hd.numerator; y=filter(b,a,x);y2=filter(b,a,x2);figure(); subplot(2,,);stem(t,[x',y']);title('first filter test with Fpass subplot(2,,2);stem(t,[x2',y2']);title('first filter test with Fstop % Második szűrő tesztelése b=hd2.numerator; y3=filter(b,a,x);y4=filter(b,a,x2);figure(2); subplot(2,,);stem(t,[x',y3']);title('second filter test with Fpass subplot(2,,2);stem(t,[x2',y4']);title('second filter test with Fstop % Harmadik szűrő tesztelése b=hd3.numerator; y5=filter(b,a,x);y6=filter(b,a,x2);figure(3); Gyakorlat_ 5
Jelek és rendszerek Gyakorlat_ subplot(2,,);stem(t,[x',y5']);title('third filter test with Fpass subplot(2,,2);stem(t,[x2',y6']);title('third filter test with Fstop e=y-y3;e2=y-y5;e3=y2-y4;e4=y2-y6; E=e*e' E2=e2*e2' E3=e3*e3' E4=e4*e4' A kód első részében a három szűrőhöz tartozó, a korábbi lépések során legenerált MATLAB kód található. Ezután létrehozunk két szinusz jelet. Az egyik frekvenciája megegyezik a szűrő F pass, a másik a szűrő F stop frekvenciájával. Ezután, ezeket a szinusz jeleket használjuk a szűrők bemeneteként és megvizsgáljuk, hogy milyen válaszokat kapunk. Végül kiszámoljuk a kapott válaszok közötti különbséget, mint hibajel az alábbiaknak megfelelően: Filter u[k] - X + Filter2 e[k] Végül, pedig meghatározzuk ennek a hibajelnek az energiáját a következő összefüggés alapján: N 2 [ ] [ ] [ ] [ ] [ ]... [ ] [ ]. E = e i = e e + e e + + e N e N i= Vesszük a hibajel négyzetét, ami lényegében egy skaláris szorzásnak felel meg. Ezt a MATLAB esetében egyszerűen a két vektor összeszorzásával érhetjük el. A kapott eredmény az Equiripple tervezési módszer és 2-as szűrő fokszám esetén: First filter test with Fpass frequency -.5.5 2 x -3 First filter test with Fstop frequency -.5.5 2 A kapott eredmény a Least-squares tervezési módszer és 2-as szűrő fokszám esetén: x -3 Gyakorlat_ 6
Jelek és rendszerek Gyakorlat_ Second filter test with Fpass frequency -.5.5 2 x -3 Second filter test with Fstop frequency -.5.5 2 A kapott eredmény az Equiripple tervezési módszer és 4-es szűrő fokszám esetén: Third filter test with Fpass frequency x -3 -.5.5 2 x -3 Thisrd filter test with Fstop frequency -.5.5 2 A kapott eredmények közötti hibák energiája, pedig az alábbiaknak megfelelően alakul. A számítás során az Equiripple tervezési módszerrel, 2-as fokszámot választva megtervezett szűrő kimenetéhez hasonlítjuk a másik két módszerrel megtervezett szűrő kimenetét, mind az F pass mind, pedig az F stop frekvenciák esetén. E =.596 E2 =44.8489 E3 =.385 E4 =.65 x -3 2.@. Készítsen diszkrétidejű sáváteresztő szűrőt az alábbiak alapján: Fs = 48; % Sampling Frequency N = 2; % Order Fstop = 72; % First Stopband Frequency Fpass = 96; % First Passband Frequency Fpass2 = 2; % Second Passband Frequency Fstop2 = 44; % Second Stopband Frequency Wstop = ; % First Stopband Weight Wpass = ; % Passband Weight Wstop2 = ; % Second Stopband Weight dens = 2; % Density Factor Végezzen változtatásokat a szűrő fokszámát és a tervezési módszereket is változtassa. Hogyan hatnak ezek a változtatások az amplitúdó és a fázis karakterisztikára, valamint a csoport késésre? Gyakorlat_ 7
Jelek és rendszerek Gyakorlat_ Hasonlítsa össze az egyes szűrők válaszát egy adott bemenetre. Adja meg a kimenetek közötti hibajel energiáját. Megoldás: Ebben a feladatban, fentiekben megadott paraméterekkel rendelkező sáváteresztő szűrőt kell készítsünk. Itt is ugyanúgy járunk el és ugyanazokat a teszteket végezzük el, mint az előző feladat esetén. A szűrőtervező program (fdatool) beállítása a következő: A megtervezett szűrő amplitúdó és fáziskarakterisztikája, valamint a csoportkésleltetés a következőképpen néz ki: 3.4836 Magnitude (db) and Phase Responses 4.8625-3.3554 2.2547 Magnitude (db) -.945-7.336 -.3532-2.96 Phase (radians) -23.8727-5.5688-3.77 5 5 2-8.767 Gyakorlat_ 8
Jelek és rendszerek Gyakorlat_.5 Group Delay.4.3 Group delay (in samples).2. 9.9 9.8 9.7 9.6 9.5 5 5 2 Tervezzük meg ugyanezt a szűrőt a Least-squares módszer segítségével is. Ekkor a kapott amplitúdó és fáziskarakterisztika valamint a csoportkésleltetés következőképen alakul: 4.4 Magnitude (db) and Phase Responses 4.4982-7.7924 2.659 Magnitude (db) -9.9858-32.792 -.3665-2.7989 Phase (radians) -44.3726-5.232-56.566 5 5 2-7.6636.5 Group Delay.4.3 Group delay (in samples).2. 9.9 9.8 9.7 9.6 9.5 5 5 2 Tervezzük meg ugyanezt a szűrőt az Equiripple módszer segítségével, de 4-es fokszámmal. Ekkor a kapott amplitúdó és fáziskarakterisztika valamint a csoportkésleltetés következőképen alakul: 3.389 Magnitude (db) and Phase Responses 7.577-7.287 3.2536 Magnitude (db) -7.883-28.479 -.4-5.2744 Phase (radians) -39.75-9.5384-49.67 5 5 2-3.824 Gyakorlat_ 9
Jelek és rendszerek Gyakorlat_ 2.5 Group Delay 2.4 2.3 Group delay (in samples) 2.2 2. 2 9.9 9.8 9.7 9.6 9.5 5 5 2 Teszteljük a három, különböző paraméterekkel megtervezett szűrőt, az előző feladathoz hasonlóan. Itt azonban három különböző F stop, F stop2, és F pass +(F pass - F pass2 ) frekvenciájú szinusz jelet használjunk, és nézzük meg, hogy valóban csak a két stop frekvencia közötti részt engedi át a szűrőnk. Az ezt megvalósító MATLAB kód a következő. % A megtervezett 3 szűrő MATLAB kódja % Teszteljük a megtervezett szűrőt: t=:/fs:2e-3; x=sin(2*pi*fstop *t); x2=sin(2*pi* Fstop2 *t); x3=sin(2*pi* (Fpass+(Fpass2-Fpass)) *t); a=; % Első szűrő tesztelése b=hd.numerator; y=filter(b,a,x);y2=filter(b,a,x2);y3=filter(b,a,x3);figure(); subplot(3,,);stem(t,[x',y']);title('first filter test with Fstop subplot(3,,2);stem(t,[x2',y2']);title('first filter test with Fstop2 subplot(3,,3);stem(t,[x3',y3']);title('first filter test with Fpass+(Fpass2-Fpass) % Második szűrő tesztelése b=hd2.numerator; y4=filter(b,a,x);y5=filter(b,a,x2);y6=filter(b,a,x3);figure(2); subplot(3,,);stem(t,[x',y4']);title('second filter test with Fstop subplot(3,,2);stem(t,[x2',y5']);title('econd filter test with Fstop2 subplot(3,,3);stem(t,[x3',y6']);title('second filter test with Fpass+(Fpass2-Fpass) % Harmadik szűrő tesztelése b=hd3.numerator; y7=filter(b,a,x);y8=filter(b,a,x2);y9=filter(b,a,x3);figure(3); subplot(3,,);stem(t,[x',y7']);title('third filter test with Fstop subplot(3,,2);stem(t,[x2',y8']);title('third filter test with Fstop2 subplot(3,,3);stem(t,[x3',y9']);title('third filter test with Fpass+(Fpass2-Fpass) e=y-y4;e2=y-y7;e3=y2-y5;e4=y2-y8;e5=y3-y6;e6=y3-y9; E=e*e' E2=e2*e2' E3=e3*e3' E4=e4*e4' E5=e5*e5' E6=e6*e6' Gyakorlat_
Jelek és rendszerek Gyakorlat_ A kapott eredmény az Equiripple tervezési módszer és 2-as szűrő fokszám esetén: First filter test with Fstop frequency -.2.4.6.8.2.4.6.8 2 First filter test with Fstop2 frequency x -3 -.2.4.6.8.2.4.6.8 2 First filter test with Fpass+(Fpass2-Fpass) frequency x -3 -.2.4.6.8.2.4.6.8 2 A kapott eredmény a Least-squares tervezési módszer és 2-as szűrő fokszám esetén: x -3 Second filter test with Fstop frequency -.2.4.6.8.2.4.6.8 2 x -3 Second filter test with Fstop2 frequency -.2.4.6.8.2.4.6.8 2 x -3 Second filter test with Fpass+(Fpass2-Fpass) frequency -.2.4.6.8.2.4.6.8 2 x -3 A kapott eredmény az Equiripple tervezési módszer és 4-es szűrő fokszám esetén: Third filter test with Fstop frequency -.2.4.6.8.2.4.6.8 2 x -3 -.2.4.6.8.2.4.6.8 2 Third filter test with Fstop2 frequency Third filter test with Fpass+(Fpass2-Fpass) frequency x -3 -.2.4.6.8.2.4.6.8 2 A 3 különböző módszerrel megtervezett szűrő közötti hiba energiája, a három különböző frekvenciájú bemeneti jel esetén: x -3 Gyakorlat_
Jelek és rendszerek Gyakorlat_ E =.65 E2 =.9733 E3 =.5 E4 =.442 E5 =.26 E6 =39.37 3.@. Készítsen diszkrétidejű sávszűrőt az alábbiak alapján: Fs = 48; % Sampling Frequency N = 2; % Order Fpass = 72; % First Passband Frequency Fstop = 96; % First Stopband Frequency Fstop2 = 2; % Second Stopband Frequency Fpass2 = 44; % Second Passband Frequency Wpass = ; % First Passband Weight Wstop = ; % Stopband Weight Wpass2 = ; % Second Passband Weight dens = 2; % Density Factor Végezzen változtatásokat a szűrő fokszámát és a tervezési módszereket is változtassa. Hogyan hatnak ezek a változtatások az amplitúdó és a fázis karakterisztikára, valamint a csoport késésre? Hasonlítsa össze az egyes szűrők válaszát egy adott bemenetre. Adja meg a kimenetek közötti hibajel energiáját. Megoldás: Hasonlóan az előző két feladathoz, itt is egy szűrőt, méghozzá egy sávszűrőt kell tervezni a fentiekben megadott paraméterekkel, az fdatool segítségével. A tervezőprogram beállításai: Gyakorlat_ 2
Jelek és rendszerek Gyakorlat_ A megtervezett szűrő amplitúdó és fáziskarakterisztikája, valamint a csoportkésleltetés a következőképpen néz ki: 3.23 Magnitude (db) and Phase Responses.2564-3.375-4.279 Magnitude (db) -9.6553-5.993-9.83-5.3286 Phase (radians) -22.339-2.857-28.6687 5 5 2-26.3854.5 Group Delay.4.3 Group delay (in samples).2. 9.9 9.8 9.7 9.6 9.5 5 5 2 Tervezzük meg ugyanezt a szűrőt a Least-squares módszer segítségével is. Ekkor a kapott amplitúdó és fáziskarakterisztika valamint a csoportkésleltetés a következőképen alakul: Gyakorlat_ 3
Jelek és rendszerek Gyakorlat_ 3.2546 Magnitude (db) and Phase Responses.2564-2.8364-4.279 Magnitude (db) -8.9274-5.84-9.83-5.3286 Phase (radians) -2.95-2.857-27.25 5 5 2-26.3854.5 Group Delay.4.3 Group delay (in samples).2. 9.9 9.8 9.7 9.6 9.5 5 5 2 Tervezzük meg ugyanezt a szűrőt az Equiripple módszer segítségével, de 4-es fokszámmal. Ekkor a kapott amplitúdó és fáziskarakterisztika valamint a csoportkésleltetés a következőképen alakul: 3.3723 Magnitude (db) and Phase Responses 2.529-7.2678-8.5438 Magnitude (db) -7.98-28.548-9.65-3.6573 Phase (radians) -39.883-4.74-49.8284 5 5 2-52.777 2.5 Group Delay 2.4 2.3 Group delay (in samples) 2.2 2. 2 9.9 9.8 9.7 9.6 9.5 5 5 2 Teszteljük a három, különböző paraméterekkel megtervezett szűrőt, az előző feladathoz hasonlóan három különböző frekvenciájú szinusz jellel a szűrőnél beállított frekvenciatartományoknak megfelelően. A kapott eredmény az Equiripple tervezési módszer és 2-as szűrő fokszám esetén: Gyakorlat_ 4
Jelek és rendszerek Gyakorlat_ First filter test with Fstop frequency -.2.4.6.8.2.4.6.8 2 First filter test with Fstop2 frequency x -3 -.2.4.6.8.2.4.6.8 2 First filter test with Fpass+(Fpass2-Fpass) frequency x -3 -.2.4.6.8.2.4.6.8 2 A kapott eredmény a Least-squares tervezési módszer és 2-as szűrő fokszám esetén: x -3 Second filter test with Fstop frequency -.2.4.6.8.2.4.6.8 2 x -3 Second filter test with Fstop2 frequency -.2.4.6.8.2.4.6.8 2 x -3 Second filter test with Fpass+(Fpass2-Fpass) frequency -.2.4.6.8.2.4.6.8 2 x -3 A kapott eredmény az Equiripple tervezési módszer és 4-es szűrő fokszám esetén: Third filter test with Fstop frequency -.2.4.6.8.2.4.6.8 2 x -3 -.2.4.6.8.2.4.6.8 2 Third filter test with Fstop2 frequency Third filter test with Fpass+(Fpass2-Fpass) frequency x -3 -.2.4.6.8.2.4.6.8 2 A 3 különböző módszerrel megtervezett szűrő közötti hiba energiája, a három különböző frekvenciájú bemeneti jel esetén: E =.27 x -3 Gyakorlat_ 5
Jelek és rendszerek Gyakorlat_ E2 =.6376 E3 =.26 E4 =.698 E5 =.5 E6 =3.56 4.@. Készítsen FIR rendszert, ami az egy útszakaszon perc alatt áthaladt autók számát tartalmazó idősorból előállítja az 5 perc alatt áthaladt autók számát tartalmazó sort. Megoldás: Tegyük fel, hogy van egy forgalmas út, ezen csak autók közlekednek. Percenként feljegyezzük, hogy hány autó haladt el előttünk. Ekkor például a következő eredményt kaphatjuk:. perc: 2 2. perc: 7 3. perc: 2 4. perc: 2 5. perc: 3 6. perc: 28 7. perc: 4 8. perc: 28 9. perc: 4. perc: 8. perc: 42 2. perc: A feladatnak megfelelően egy FIR szűrőt kell tervezni, ami kiszámolja az 5 percenként áthaladó autók számát. Felhasználva a digitális szűrők első feladatban bemutatott egyenletét a következő MATLAB kóddal megoldható a fenti feladat: a=; b=[ ]; autok_szama=[ 2 7 2 2 3 28 4 28 4 8 42 ]; y=filter(b,a,autok_szama) stem(y);grid; Itt tehát egy olyan FIR szűrőt kellet tervezni, amely esetében az előző 5 bemenetet vesszük figyelembe, mindegyiket -es súllyal. A kapott eredmény: 2 37 49 7 8 3 47 66 54 68 29 6 43 Gyakorlat_ 6
Jelek és rendszerek Gyakorlat_ 8 6 4 2 8 6 4 2 5 5 2 25 Készítsünk egy olyan FIR szűrőt is, amely segítségével az 5 percenként áthaladó autók számának átlagát lehet meghatározni. Ezt a feladatot megoldó MATLAB kód: a=5; b=[ ]; autok_szama=[ 2 7 2 2 3 28 4 28 4 8 42 ]; y=filter(b,a,autok_szama) stem(y);grid; A kapott eredmény: 4. 7.4 9.8 4. 2. 2.6 26.2 29.4 33.2 3.8 33.6 25.8 2.2 2.2 8.6.2 35 3 25 2 5 5 5 5 2 25 Mindkét esetben jól látható a szűrő 5-ös csoportkésleltetésének a hatása, ugyanis 5 darab aktuális bemenet kell annak érdekében, hogy a szűrő kimenetén a helyes érték jelenjen meg. Egy másik módszer a feladat megoldására. Az előbbiekben megtervezett FIR szűrő (az 5 percenként az áthaladó autók számát összeadó) impulzus válasza [ ]. Gyakorlat_ 7
Jelek és rendszerek Gyakorlat_ Ha ezt konvolváljuk a bemenettel, akkor megkapjuk a szűrő kimenetét. A bemenet itt most az áthaladó autók száma. Tehát: h=[ ]; u=[ 2 7 2 2 3 28 4 28 4 8 42 ]; y=conv(h,u); 2 37 49 7 8 3 47 66 54 68 29 6 43 Az autók 5 percenkénti átlagát számító FIR szűrő impulzus válasza [/5 /5 /5 /5 /6]. Tehát: h=[/5 /5 /5 /5 /5]; u=[ 2 7 2 2 3 28 4 28 4 8 42 ]; y=conv(h,u); 4. 7.4 9.8 4. 2. 2.6 26.2 29.4 33.2 3.8 33.6 25.8 2.2 2.2 8.6.2 Gyakorlat_ 8