K odhadu frekvence signálu použijeme LMS prediktor 2. řádu jehož struktura je na Obr. 3.2
Z Obr. 3.2 jednoduše sestavíme rovnici filtrace
Jak již víte, LMS nahrazuje kritérium minimalizace (které jsme rozebírali například minulé cvičení) kritériem minimalizace aktuální kvadratické chyby . Tedy váhy upravuje tak, aby se zmenšila. Ona úprava spočívá v odečtení nějakého malého násobku gradientu od vah (pohne tedy vahami proti směru gradientu3.2). Nejprve s použitím (3.2) spočteme gradient vzhledem k
Poznámka: Co se tady vlastně děje? Jaký má výsledek vztah k původnímu kritériu minimalizace . Za předpokladu stacionarity a ergodicity (alespoň na intervalech omezené délky) můžeme tento vztah skutečně najít. Rozepíšeme-li kroků rekurze (3.3) dojdeme ke vztahu mezi vahami a
Jelikož se LMS snaží minimalizovat výkon na výstupu (viz. poznámka výše), umisťuje nuly poblíž těch frekvencí , kde je soustředěn nejvyšší výkon (v případě náhodných procesů bychom měli mluvit o maximech spektrální výkonové hustoty). V případě harmonického signálu tedy na frekvenci harmonického signálu (nikde jinde výkon není). Z toho vychází myšlenka určení frekvence vstupního signálu jako polohy nuly (přesně úhlu nuly, při komplexně sdružených nulách) filtru s fixními vahami 3.4
Předně se potřebujeme podívat jak vypadá přenosová funkce takového filtru. Použijeme tedy Z-transformaci na (3.1) (s náhradou za - fixní váhy) a vyjádříme přenosovou funkci
Cvičení 3.1: Implementujte v Matlabu strukturu LMS prediktoru 2. řádu, jako vstupní signál použijte vygenerovaný v předchozím cvičení (začněte s A - konstantní úhlová frekvence). Vyneste si průběh vah. Konvergenční konstantu volte tak aby došlo k ustálení.
Řešení:
x = x(:); % do sloupcoveho vektoru mu = 0.05; % konvergencni konstanta M = 2; % rad (nelze menit, ale je to prehlednejsi, nez psat vsude 2) w = zeros(M,N); % sloupcove vektory vah pro jednotlive casy w(:,3) = [ 0; 0]; % nulove poc. podminky for n = 3:N-1 % filtrace xp = - w(:,n)'*x(n-1:-1:n-M); % predikce e = x(n) - xp; % chyba predikce % uprava vah w(:,n+1) = w(:,n) - mu*e*x(n-1:-1:n-M); end
Cvičení 3.2: Doplňte smyčku LMS algoritmu o odhad frekvence vstupního signálu s použitím aktuálních hodnot vah. Frekvenci odhadněte jako polohu nuly viz. (3.7). Porovnejte odhad frekvence se skutečným průběhem frekvence signálu . U případů B a C nastavte tak, aby LMS stíhal sledovat změny frekvence.
Poznámka: Před použitím (3.7) nezapomeňte otestovat, zda jsou nuly opravdu komplexně sdružené, nebo násobné.
Vynesení výsledků:
figure(2) subplot(2,2,1); plot(1:N,Wchp/pi,'r'); % skutecna frekvence hold on plot(1:N,real(Wodhad)/pi,'b'); % odhadnuta frekvence (faze nuly) hold off subplot(2,2,3); plot(1:N,real(rodhad),'b'); % modul nuly subplot(2,2,2); % prubehy vah plot(1:N,w(1,:),'b'); hold on plot(1:N,w(2,:),'r'); hold off subplot(2,2,4); % nuly v polrnich souradnicich polar(real(Wodhad(3:N-1)),real(rodhad(3:N-1)),'b'); figure(3) % modul prenosove fce filtru WN = 100; W = linspace(0,pi,WN); H = zeros(WN,N); for n = 1:N % pro kazde n spocteme frekvencni charakteristiku [H(:,n)] = freqz([1 w(:,n)'],[1 0 0],W)'; end surf(1:N,W/pi,abs(H)) % vykresleni modulu colormap(jet); shading interp; view([-37.5,70]);Výsledky pro lineární chirp:
|
|
Cvičení 3.3: Toto cvičení je věnováno sledování vlivu počátečních podmínek na rychlost konvergence. Jako vstupní signál použijte harmonický signál A. Počáteční podmínky volte
Cvičení 3.4: Jako vstupní signál použijte harmonický signál A. Přidejte k bílý gausovský šum, rozptyl volte . Jak přidání šumu ovlivňuje odhad?
|