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?
![]() |