next up previous
Next: 4.3 Chybový povrch Up: 4. Cvičení 4: Identifikace Previous: 4.1 Odvození LMS

Subsections

4.2 Úloha identifikace - vlastní cvičení

V úloze identifikace je naším cílem určit neznámý systém (jeho impulsovou odezvu), máme-li k dispozici jeho vstup a výstup. To můžeme učinit paralelním připojením adaptivního filtru, jak je naznačeno na Obr. 4.2.

Figure 4.2: Úloha identifikace
\begin{figure}\begin{center}
\pstexfig{a4ident}
\end{center}
\end{figure}

LMS se snaží nastavovat váhy adaptivního filtru tak, aby byl výkon na chybovém výstupu minimální. Je zřejmé, že výkon chyby $ e[n]$ bude minimální právě tehdy, když impulsové odezvy obou systémů budou shodné. Impulsovou odezvu neznámého systému pak určíme z vah adaptivního filtru. Úloha může být dále komplikována přítomností aditivního šumu $ u[n]$. Správná funkce struktury Obr. 4.2 je pak podmíněna nekorelovaností $ x[n]$ a $ u[n]$.


Cvičení 4.0: Vygenerujte si signál $ x[n]$ jako bílý gausovský šum s nulovou střední hodnotou a rozptylem $ 1$. Vygenerujte si signál $ u[n]$ jako bílý gausovský šum s nulovou střední hodnotou a rozptylem $ 0.3^2$. Délky obou posloupností volte $ N=500$ vzorků. Neznámý systém budeme reprezentovat vektory koeficientů čitatele a jmenovatele přenosové funkce plant_B a plant_A 4.1. Nastavte plant_B = [ 0.5; -1.5 ] a plant_A = [ 1; 0 ] (FIR řádu 1).


N = 500; % pocet vzorku
M = 1; % rad Adaptivniho filtru

% kyticka
plant_b1 = 0.5;
plant_b2 = -1.5;
plant_B = [plant_b1;plant_b2]; % FIR, rad 1
plant_A = [1;0];

u_sigma = 0.3; % rozptyl^0.5 aditivniho ruseni

x = randn(N,1); % bily sum
u = u_sigma*randn(N,1); % aditivniho ruseni


Cvičení 4.1: Napište m-file implementující strukturu Obr. 4.2. Pro libovolný řád adaptivního filtru $ M$. Konvergenční konstantu LMS algoritmu $ \mu$ volte mu = 0.1/((M+1)*rozptyl_x[n]). Vyneste si průběh vah na čase a ověřte, že se blíží správným hodnotám.


4.2.0.0.1 Modelování d[n]:

Signál $ d[n]$ si připravte předem (před vlastním cyklem implementujícím LMS) pomocí volání filter.
d = filter(plant_B,plant_A,x) + u;

4.2.0.0.2 LMS:

Zbytek už je vlastně struktura Obr. 4.1(a), viz. rovince (4.1), (4.3). V případě, že si nebudete vědět rady implementace prediktoru z minulého cvičení je velice obdobná.

Výsledky:

Figure 4.3: Buzení bílým šumem: nahoře modul spektra a PSD buzení $ x[n]$, dole průběhu vah
\includegraphics[width=10cm]{ada4/obrmat/fig1.ps}


Cvičení 4.2: Jako buzení $ x[n]$ použijte místo bílého šumu AR proces druhého řádu (barevné buzení). Póly all-pole filtru v AR modelu volte komplexně sdružené $ 0.95e^{\jmath \pi/6},0.95e^{-\jmath \pi/6}$. Normujte rozptyl AR procesu na jedna.

Vyneste si opět průběhy vah a porovnejte je s původními průběhy pro buzení bílým šumem. Sledujte rozdíly v rychlosti konvergence, pokuste se objasnit příčiny pozorovaného chování LMS.


Vygenerovat $ N$ vzorků AR procesu, máme-li zadané póly by měl umět již každý (dělali jsme to třeba již na 1. cvičení, a v druhém jsme AR procesy důkladně popsali). Časově problematická je ale část normování rozptylu (integrace), proto zde uvádím celý m-file.

x_pol_r = 0.95; % poloha polu barevne buzeni
x_pol_W = pi/6;
a = x_pol_r*exp(j*x_pol_W);

x_vykon = 2 / (abs(a)^2-1) * real( a/(a-conj(a))/(a^2-1) );
x_A = [1, -2*x_pol_r*cos(x_pol_W), x_pol_r^2];
x_B = [1, 0, 0]/sqrt(x_vykon);

x = filter(x_B,x_A,randn(N,1));

Výsledky:

Figure 4.4: Barevné buzení: nahoře modul spektra a PSD buzení $ x[n]$, dole průběhu vah
\includegraphics[width=10cm]{ada4/obrmat/fig2.ps}


Poznámka: Proč je konvergence u barevného buzení tak špatná? Volíme-li $ \mu$ příliš malé, zajistíme tím konvergenci (stabilitu) adaptivního filtru, ale filtr se nebude stíhat dostatečně rychle adaptovat na změny v signálu (zde změny identifikovaného systému). Z tohoto hlediska se snažíme volit $ \mu$ co největší. To ale na druhou stranu může vést k divergenci filtru. Z přednášky víte, že horní mez pro volbu $ \mu$ (aby LMS bylo ještě stabilní) je nepřímo úměrná výkonu (rozptylu) buzení (čím větší výkon buzení, tím menší $ \mu$ musíme volit).

Je-li výkon (PSD) buzení soustředěn pouze v úzkém pásmu (Jako u našeho barevného buzení), a $ \mu$ nastavíme na onu horní mez, bude konvergence v tomto pásmu rychlá. Ale z hlediska ostatních pásem bude konvergence pomalá, neboť zde je filtr vybuzen minimálně a volba $ \mu$ je z hlediska těchto pásem příliš konzervativní (nízká). Při buzení bílým šumem je konvergence optimální (ve všech pásmech stejně rychlá). Tedy ačkoli pro oba případy filtr konverguje v průměru stejně rychle (obě buzení mají stejný rozptyl), u barevného buzení se musí čekat i na ty nejpomalejší pásma, proto zde konvergence trvá déle.

Toto vysvětlení je dosti vágní a sedí hlavně pro filtry vyšších řádů. u filtrů nižších řádů bychom už museli přesněji vymezit co je to ono frekvenční pásmo. Tuto úvahu se snaží ilustrovat následující cvičení.



Cvičení 4.3: Vygenerujte $ R=200$ realizací $ e[n]$ (doslova musíte vygenerovat $ R$ realizaci $ x[n]$ a $ u[n]$ a z nich $ R$-krát vygenerovat $ d[n]$ a $ e[n]$)

Vyneste průběh $ \mathrm{E}[e^2[n]]$ (MSE - Mean Square Error) na $ n$ pro oba typy buzení (operátor $ \mathrm{E}[.]$ uplatněte tak jak je psáno, tedy přes realizace nikoli přes čas - nyní žádnou stacionaritu a ergodicitu nepředpokládáme).

Až průběhy $ \mathrm{E}[e^2[n]]$ vynesete zjistíte, že se velmi podobají exponenciálám. Z tohoto důvodu je lepší vynášet v decibelech, exponenciály přejdou na přímky a vše je hned lépe vidět.


Uvádím m-file pro generování více realizací:

R = 200; % pocet realizaci (pouze pro vypocet E[.])

X = zeros(N,R);
U = zeros(N,R);
D = zeros(N,R);

for r = 1:R
  genx; % Vas skript pro generovani x[n], u[n], a d[n]

  X(:,r) = x;
  U(:,r) = u;
  D(:,r) = d;
end;

% vypocet R realizaci e[n]

E = zeros(N,R);

for r=1:R
  x = X(:,r);
  d = D(:,r);

  ident; % Vas skript pro generovani e[n] z x[n] a d[n]

  E(:,r) = e;
end;
a skript na výpočet MSE:
mse =  sum(E.^2')'/R;
Výsledky:
Figure 4.5: Porovnání MSE pro oba typy buzení. Různé časové konstanty odpovídají různým sklonům přímek. Vidíte, že průběh MSE pro bílý šum se vyznačuje jedinou časovou konstantou (stejná konvergence ve všech pásmech). Naproti tomu průběh MSE pro barevné buzení se vyznačuje dvěma časovými konstantami (kde jedna je menší než u bílého šumu (není moc vidět - příliš malá) a druhá bohužel větší).
\includegraphics[width=10cm]{ada4/obrmat/fig3.ps}

Další precizování důvodů rozdílné konvergence v závislosti na buzení je uvedeno v dodatku 4.3 o chybovém povrchu. Tento dodatek trochu předbíhá přednášku, kde se o chybovém povrchu dozvíte později, ale zdálo se mi, že se přece jenom na toto cvičení (alespoň zmínka) hodí tak si ho prohlédněte (je tam spousta obrázků).


Cvičení 4.4: Nyní nám bude opět stačit jediná realizace $ e[n]$ a vpřípadě buzení se omezíme na bílý šum. Jako neznámý systém použijte integrátor s pólem v $ 0.9$.

Vyneste si frekvenční charakteristiku odpovídající nastavení $ \mathbf{w}[N]$ adaptivního filtru a porovnejte ji s charakteristikou identifikovaného systému (integrátoru).

Sledujte jak závisí shoda obou charakteristik na volbě řádu $ M$ adaptivního filtru.


Figure 4.6: Frekvenční charakteristiky pro řád adaptivního filtru M = 10 a M = 20
\includegraphics[width=10cm]{ada4/obrmat/fig10.ps}
\includegraphics[width=10cm]{ada4/obrmat/fig11.ps}

4.2.1 Potlačení echa v automobilu

Problém je naznačen na obrázku Obr. 4.7

Figure 4.7: Potlačování echa v automobilu
\begin{figure}\begin{center}
\pstexfig{a4auto}
\end{center}
\end{figure}

Jde nám o to aby $ e[n]$ obsahoval pouze hlas řidiče nikoli mluvčího na druhém konci linky. Vidíte, že se jedná opět o úlohu identifikace. Takže můžete použít skripty vytvořené v předchozích cvičeních akorát zaměníte použité signály.


Cvičení 4.5: Jako $ x[n]$ (mluvčí na vzdáleném konci linky) použijte tento řečový signál. Jako $ u[n]$ (řidič) použijte tento řečový signál. Oba signály ořízněte na délku $ N = 6000$ vzorků. Impulsovou odezvu od reproduktoru k mikrofonu (identifikovaný systém) volte jako zpoždění o 4 vzorky. Řád adaptivního filtru volte $ M=10$. Vyneste si spektrogramy signálů $ x[n]$, $ u[n]$, $ d[n]$, $ e[n]$.


Výsledky:

Figure 4.8: Spektrogramy pro (zleva doprava) mluvčího na vzdáleném konci linky ($ x[n]$), řidiče ($ u[n]$), směsi na mikrofonu ($ d[n]$) a výsledek po potlačení echa ($ e[n]$).
\includegraphics[width=10cm]{ada4/obrmat/fig12.ps}


next up previous
Next: 4.3 Chybový povrch Up: 4. Cvičení 4: Identifikace Previous: 4.1 Odvození LMS
Mirek 2006-12-12