Úvod do číslicového zpracování signálů - UCZ
Cvičení 5
Funkce roots a poly | Rozklad filtru na sekce druhého řádu | Analýza a rozklad filtru | Aditivní syntéza hudebních nástrojů

kodovani ISO 8859-2
Úloha 5.1 "Funkce roots a poly"

Najděte kořeny polynomu čtvrtého stupně H(z). Následně využijte tyto kořeny pro rozklad H(z) na dva polynomy druhého stupně. Zobrazte nalezené kořeny polynomu H(z) v  komplexní rovině. Polynom H(z) má následující tvar:



Řešení:

Pomocí funke roots nalezneme kořeny H(z), tomu odpovídají následující příkazy matlabu
b = [0.108 -0.25 0.345 -0.25 0.108];
c = roots(b);

Získané kořeny mají následující hodnoty

Pomocí funkce poly sestavíme z prvých dvou komplexně sdružených kořenů polynom H1(z) a z druhých dvou polynom H2(z)
b1 = poly([c(1) c(2)]);
b2 = poly([c(3) c(4)]);


Výpočet konstanty
k=b/poly(c);

Vykreslení všech kořenů v komplexní rovině dosáhneme příkazem:
zplane(c);



Úloha 5.2 "Funkce roots a poly"

Najděte kořeny polynomu čtvrtého stupně H(z). Následně využijte tyto kořeny pro rozklad H(z) na dva polynomy druhého stupně. Zobrazte nalezené kořeny polynomu H(z) v  komplexní rovině. Polynom H(z) má následující tvar:

Namalujte strukturu číslicového filtru zadaného pomocí H(z), následně namalujte strukturu filtru odpovídající výrazu H(z)=k.H1(z).H2(z) .



Úloha 5.3 "Rozklad filtru na sekce druhého řádu"

Navrhněte pásmovou propust jako Čebyševův filtr I.typu optimálního řádu a splňující požadavky:

Takto navržený filtr rozdělte na sekce druhého řádu. Pomocí grafů frekvenčních charakteristik vyhodnoťte vliv každé takto vzniklé sekce a sledujte vliv rozložení nul a pólů u těchto charakteristik. Namalujte uspořádání původně navrženého filtru a filtru složeného ze sekcí.

Řešení:

Návrh filtru IIR a vykreslení charakteristik

% navrh filtru
fv = 8000;           % vzorkovaci frekvence
fp = [1000 3000];    % propustne pasmo
fs = [500 3500];     % nepropustne pasmo
rp = 1;              % zvlneni v propustnem pasmu [dB]
rs = 10;             % minimalni utlum v nepropustnem pasmu [dB]

% normovani k Nyquistove frekvenci (k polovine vzorkovaci frekvence)
wp = fp/(fv/2);
ws = fs/(fv/2);

% navrh meznich frekvenci a minimalniho radu analogoveho prototypu
[n,wn] = cheb1ord(wp,ws,rp,rs);
% navrh koeficientu cislicoveho filtru podle analogoveho prototypu
[b,a] = cheby1(n,rp,wn);

% zobrazeni frekvencnich charakteristik
N = 1000;                % N... pocet bodu, pro ktere se charakteristika pocita
[h,w] = freqz(b,a,N,fv); % h... prenosova funkce (komplexni !), w... frekvencni osa
A = abs(h+eps);          % absolutni hodnota prenosu
A_dB = 20*log10(A);
faze = angle(h);         % vypocet a rozbaleni faze
faze = unwrap(faze);
[Gd,F] = grpdelay(b,a,N,fv);    % vypocet fazoveho zpozdeni

% zobrazeni charakteristik
figure(1);
subplot(2,2,1); plot(w,A); title('Prenos');
subplot(2,2,3); plot(w,A_dB); title('Prenos [dB]'); axis([0 4000 -40 10]);
subplot(2,2,2); plot(w,faze); title('Faze');
subplot(2,2,4); plot(F,Gd); title('Skupinove zpozdeni');
% zobrazeni nul a polu
figure(2);
zplane(b,a);

Obr.1: Charakteristiky navrženého filtru a rozložení nul a pólů

Rozdělení přenosové funkce H(z) na funkce Hi(z) s polynomy druhého řádu

% rozdeleni filtru na sekce druheho radu
% nalezeni korenu polynomu jmenovatele prenosove funkce (nalezeni polu)
korenya = roots(a);
% vypocet koeficientu polynomu druheho stupne pomoci prvnich dvou korenu
a1 = poly([korenya(1) korenya(2)]);
% vypocet koeficientu polynomu druheho stupne pomoci druhych dvou korenu
a2 = poly([korenya(3) korenya(4)]);

% nalezeni korenu polynomu citatele prenosove funkce (nalezeni nul)
korenyb = roots(b);
% vypocet koeficientu polynomu druheho stupne pomoci prvnich dvou korenu
b1 = poly([korenyb(1) korenyb(2)]);
% vypocet koeficientu polynomu druheho stupne pomoci druhych dvou korenu
b2 = poly([korenyb(3) korenyb(4)]);

% vypocet konstant, ktere byly ztraceny pri rozkladu
ka = a/poly(korenya);
kb = b/poly(korenyb);

Zobrazení frekvenčních charakteristik první sekce

% zobrazeni frekvencnich charakteristik prvni sekce (a1,b1)
N1 = 1000;                    % N1... pocet bodu, pro ktere se charakteristika pocita
[h1,w1] = freqz(b1,a1,N1,fv); % h1... prenosova funkce (komplexni !), w1... frekvencni osa
A1 = abs(h1+eps);             % absolutni hodnota prenosu
A_dB1 = 20*log10(A1);
faze1 = angle(h1);            % vypocet a rozbaleni faze
faze1 = unwrap(faze1);
[Gd1,F1] = grpdelay(b1,a1,N1,fv);    % vypocet fazoveho zpozdeni

% zobrazeni charakteristik
figure(3);
subplot(2,2,1); plot(w1,A1); title('Prenos');
subplot(2,2,3); plot(w1,A_dB1); title('Prenos [dB]'); axis([0 4000 -40 10]);
subplot(2,2,2); plot(w1,faze1); title('Faze');
subplot(2,2,4); plot(F1,Gd1); title('Skupinove zpozdeni');
% zobrazeni nul a polu
figure(4);
zplane(b1,a1);

Obr.2: Charakteristiky první sekce rozděleného filtru a rozložení nul a pólů

Zobrazení frekvenčních charakteristik druhé sekce

% zobrazeni frekvencnich charakteristik druhe sekce (a2,b2)
N2 = 1000;                     % N2... pocet bodu, pro ktere se charakteristika pocita
[h2,w2] = freqz(b2,a2,N2,fv);  % h2... prenosova funkce (komplexni !), w2... frekvencni osa
A2 = abs(h2+eps);              % absolutni hodnota prenosu
A_dB2 = 20*log10(A2);
faze2 = angle(h2);             % vypocet a rozbaleni faze
faze2 = unwrap(faze2);
[Gd2,F2] = grpdelay(b2,a2,N2,fv);    % vypocet fazoveho zpozdeni

% zobrazeni charakteristik
figure(5);
subplot(2,2,1); plot(w2,A2); title('Prenos');
subplot(2,2,3); plot(w2,A_dB2); title('Prenos [dB]'); axis([0 4000 -40 10]);
subplot(2,2,2); plot(w2,faze2); title('Faze');
subplot(2,2,4); plot(F2,Gd2); title('Skupinove zpozdeni');
% zobrazeni nul a polu
figure(6);
zplane(b2,a2);

Obr.3: Charakteristiky druhé sekce filtru a rozložení nul a pólů

Zobrazení frekvenčních charakteristik obou sekcí zapojených za sebou

% zobrazeni frekvencnich charakteristik obou sekci zapojenych do serie (za sebe)
figure(7);
subplot(2,2,1); plot(w2,A2.*A1*(kb/ka)); title('Prenos');
subplot(2,2,3); plot(w2,A_dB2+A_dB1+20*log10(kb/ka)); title('Prenos [dB]'); axis([0 4000 -40 10]);
subplot(2,2,2); plot(w2,faze2+faze1); title('Faze');
subplot(2,2,4); plot(F2,Gd2+Gd1); title('Skupinove zpozdeni');
 

Obr.4: Charakteristiky spojení první a druhé sekce filtru


Úloha 5.4 "Analýza a rozklad filtru"

Návrhem pásmové zádrže vyšla následující přenosová funkce.

Namalujte blokové schéma filtru odpovídající této přenosové funkci. Vykreslete přenosové charakteristiky a rozložení nul a pólů přenosové funkce. Najděte konkrétní hodnoty nula a pólů a pomocí nich rozdělte zadaný filtr na dvě sekce druhého řádu. Pro každou sekci vykreslete její charakteristiky a podle nich posuďte její vliv. Nakreslete schéma takto upraveného filtru.



Úloha 5.5 "Aditivní syntéza hudebních nástrojů"

Pokud tón hudebního nástroje budeme považovat v jistém časovém intervalu za neměnný, pak ho lze analyzovat jako periodický signál a ten lze rozložit na řadu sinových funkcí o různých kmitočtech, amplitudách a fázích. Sinovou funkci s nejnižším kmitočtem nazýváme základní harmonickou - ta je pro všechny tóny známá. Kmitočty ostatních sinových funkcí jsou vždy celým násobkem kmitočtu základní - první harmonické.
Napište m-file, který generuje tóny c1 až c2 pomocí fce sin, ke každému tónu přičtěte prvních šest harmonických kmitů o vámi zvolených amplitudách a fázích. Diskutujte vliv jednotlivých harmonických kmitů na výsledný zvuk tónů. Pro každou vámi vytvořenou "konfiguraci" tónu přehrajte notovou stupnici.

Základní kmitočty jednotlivých tónů jsou:
%definice zakladni frekvence tonu
c1=262; d1=294; e1=330; f1=349; g1=392; a1=440; h1=494; c2=523;


Tento text vznikl jako podklad pro cvičení z předmětu UCZ na katedře teorie obvodů ČVUT. Pro přípravu těchto stránek bylo využito informací z webových stránek Číslicové Signály a Systémy (CSS), kde je také možno najít další zajímavé informace :-)

Jan Novotný: novotnj2@feld.cvut.cz 20.10.2001