V této části budu vynechávat označení u váhového vektoru,
bude to přehlednější.
Podíváme se nyní na jiné řešení uvedeného problému.
Pokusíme se celý prostor vah otočit tak (viz. Obr. 12.3), aby
lineární podprostor
po transformaci
odpovídal lineárnímu obalu
12.1vektorů standardní báze.
Jinými slovy, aby část souřadnic transformovaného váhového vektoru
byla přímo určena okrajovými podmínkami, a naopak aby na zbývající
souřadnice nebyly uvaleny žádné okrajové podmínky.
To má výhodu v tom, že souřadnice
bez okrajových podmínek lze upravovat pomocí LMS bez
okrajových podmínek, čímž se zamezí výše zmíněným chybám (zbytek
souřadnic je daný okrajovými podmínkami
a nemusí se tedy upravovat vůbec - je fixní).
Pokusíme se transformaci uvedených vlastností nalézt.
Nejprve ale nalezneme ortonormální bázi k lineárnímu obalu
sloupců matice
(lineární obal sloupců matice budu dále značit
) a jeho ortogonálnímu doplňku.
Tedy takovou ortonormální bázi
(vektory báze
seřadím do ortonormální matice
)
Transformace
transformuje standardní
bázi (sloupce
)
na bázi složenou z sloupcových vektorů
Abychom mohli zakreslit novou strukturu s transformovanými vahami
dosadíme z (12.10)
do rovnice filtrace (12.2). Nyní již opět začnu vyznačovat
u vah závislost na diskrétním čase . Jak jsme již uvedli,
u transformovaného váhového vektoru lze měnit pouze část
, část
je jednoznačně určena okrajovými
podmínkami a je tedy konstantní proto zde závislost na čase nevyznačuji.
Váhy
nejsou okrajovými podmínkami nijak omezeny
proto na jejich úpravu mohu
použít obyčejné LMS bez okrajových podmínek.
Z (12.13) určíme gradient
Celý LMS algoritmus pro GSC je shrnut v následující tabulce:
Cvičení 12.0: Napište skript v Matlabu implementující strukturu GSC viz. Obr. 12.4
váhy nastavujte pomocí LMS viz. tabulka 12.1
konvergenční konstantu volte mu = 0.1/((J*K-J)*rxx0).
Senzorové pole se skládá z senzorů umístěných
rovnoměrně v řadě (Uniform Linear Array - ULA).
Vzdálenost mezi sousedními senzory odpovídá jednomu vzorku.
K dispozici jsou následující signály sejmuté na senzorech
(signály se šíří s rovinnou vlnoplochou):
signál | zpoždění mezi sousedními senzory | úhel dopadu |
řeč | 0 vzorků | ![]() |
bílý šum | ![]() |
![]() |
Uvádím skript na generování matice
a vektoru
,
dále výpočet matic
a
pomocí QR-rozkladu
matice
:
C = zeros(J*K,J); for c=1:J C((c-1)*K+1:c*K,c) = ones(K,1); end; f = [ zeros(1,floor(J/2)) 1 zeros(1,floor(J/2)) ]'; [ Q R ] = qr(C); Qn = Q(:,1:J); Qc = Q(:,J+1:J*K); wn = inv(C'*Qn)*f; wp = (wn'*Qn')';
![]() |