E
elvaman2004
Guest
Tiedän Matlab toteuttaa diatropic Suodata LMS-algoritmi,
Mutta miten käyttää Matlab toteuttaa UCL Suodata LMS-algoritmi? Ole hyvä ja auta minua resove!
Ohjelma MATLAB ymmärtää diatropic Suodata LMS-algoritmi:
poistaa kaikki
Sulje kaikki
pitää loitolla
% kanavainen järjestelmä, jotta
sysorder = 5;
% Määrä järjestelmän pistettä
N = 2000;
inp = randn (N, 1);
n = randn (N, 1);
= voita (2,0.25);
GZ = tf (b, a, -1);
% Tämä toiminto on toimitettu tehdä inverse Z-muunnos (Matlab Keski-tiedostojen vaihto)
% Ensimmäinen sysorder paino arvo
% h = ldiv (b, a, sysorder) ";
%, Jos käytät ldiv tämä antaa h: suodatin painot on
h = [0,0976;
0.2873;
0.3360;
0.2210;
0,0964;];
y = lsim (gz, INP);
% add some noise
n = n * std / (10 * std );
d = y n;
totallength = size (d, 1);
% Otetaan 60 pistettä koulutus
N = 60;
% aloittaa ja algoritmin
w = zeros (sysorder, 1);
N = sysorder: N
u = INP (n: -1: n-sysorder 1);
y = w '* u;
e = d - y ;
% Aloita iso MU vauhdittaa lähentymistä sitten hidastaa päästä oikeaan painot
Jos n <20
MU = 0,32;
muuten
MU = 0,15;
loppu
W = W MU * u * e ;
loppu
% tarkastuksen tulokset
n = N 1: totallength
u = INP (n: -1: n-sysorder 1);
y = w '* u;
e = d - y ;
loppu
pidä kiinni
plot (d)
plot (y, 'r');
Otsikko ( "System output");
xlabel (näytteitä)
ylabel ( 'True ja arvioitu tuotanto)
kuvassa
semilogy ((abs (e)));
title ( 'Virhe curve ");
xlabel (näytteitä)
ylabel ( 'Error arvo ")
kuvassa
plot (t, 'k ')
pidä kiinni
plot (w, 'r *')
legenda ( "todellisia painoja", "Arvioitu painot)
Otsikko ( "vertailu todellisia painoja ja arvioitu paino");
axis ([0 6 0,05 0,35])
Mutta miten käyttää Matlab toteuttaa UCL Suodata LMS-algoritmi? Ole hyvä ja auta minua resove!
Ohjelma MATLAB ymmärtää diatropic Suodata LMS-algoritmi:
poistaa kaikki
Sulje kaikki
pitää loitolla
% kanavainen järjestelmä, jotta
sysorder = 5;
% Määrä järjestelmän pistettä
N = 2000;
inp = randn (N, 1);
n = randn (N, 1);
= voita (2,0.25);
GZ = tf (b, a, -1);
% Tämä toiminto on toimitettu tehdä inverse Z-muunnos (Matlab Keski-tiedostojen vaihto)
% Ensimmäinen sysorder paino arvo
% h = ldiv (b, a, sysorder) ";
%, Jos käytät ldiv tämä antaa h: suodatin painot on
h = [0,0976;
0.2873;
0.3360;
0.2210;
0,0964;];
y = lsim (gz, INP);
% add some noise
n = n * std / (10 * std );
d = y n;
totallength = size (d, 1);
% Otetaan 60 pistettä koulutus
N = 60;
% aloittaa ja algoritmin
w = zeros (sysorder, 1);
N = sysorder: N
u = INP (n: -1: n-sysorder 1);
y = w '* u;
e = d - y ;
% Aloita iso MU vauhdittaa lähentymistä sitten hidastaa päästä oikeaan painot
Jos n <20
MU = 0,32;
muuten
MU = 0,15;
loppu
W = W MU * u * e ;
loppu
% tarkastuksen tulokset
n = N 1: totallength
u = INP (n: -1: n-sysorder 1);
y = w '* u;
e = d - y ;
loppu
pidä kiinni
plot (d)
plot (y, 'r');
Otsikko ( "System output");
xlabel (näytteitä)
ylabel ( 'True ja arvioitu tuotanto)
kuvassa
semilogy ((abs (e)));
title ( 'Virhe curve ");
xlabel (näytteitä)
ylabel ( 'Error arvo ")
kuvassa
plot (t, 'k ')
pidä kiinni
plot (w, 'r *')
legenda ( "todellisia painoja", "Arvioitu painot)
Otsikko ( "vertailu todellisia painoja ja arvioitu paino");
axis ([0 6 0,05 0,35])