Programme LMS (Least-Mean Square)
Bonjour,
J'ai écrit un programme en Matlab pour simuler l'algorithme LMS et j'ai un petit problème, si quelqu'un pourrait m'aider...
Le but étant de rechercher la valeur de mu optimal pour lequel la variance est minimale...
Voici mon programme, composé d'une fonction algoLMS.m, et d'une simulation simuLMS.m :
---------------------------------------------------------algoLMS.m--------------------------------------------------------------
% Algorithme Least-Mean Square (LMS)
function [h,variance] = algoLMS(x,y,Q,mu)
N = 500;
delta = 10^-9;
RSB = 100;
h = [1 -0.7 0.5 -0.3];
L = length(h);
x = randn(1,N);
x = x-mean(x);
b = randn(1,N);
b = b-mean(b);
b = (b/std(b))*sqrt(var(x)*10^(-RSB/10));
y = filter(h,1,x);
% conditions initiales
Q = eye(L)/delta;
h = zeros (1,N);
for n = N:L
xn = x(n:-1:n-(N-1));
yn = h'*xn;
bn = yn-y;
mu = 2*mu;
h = h-(mu*bn*xn);
end
plot(b)
variance = var(bn);
---------------------------------------------------------simuLMS.m--------------------------------------------------------------
mu = linspace(0,1,1000);
for k = 1:1000
[h,variance(k)] = algoLMS(xn,yn,Q,mu(k));
end
plot(mu,variance)
-------------------------------------------------------------------------------------------------------------------------------------
et voici mon erreur lorsque je lance la simulation:
>> simuLMS
??? Undefined function or variable "xn".
Error in ==> simuLMS at 4
[h,variance(k)] = algoLMS(xn,yn,Q,mu(k));
Merci d'avance pour votre aide...
mi_k_l
J'ai écrit un programme en Matlab pour simuler l'algorithme LMS et j'ai un petit problème, si quelqu'un pourrait m'aider...
Le but étant de rechercher la valeur de mu optimal pour lequel la variance est minimale...
Voici mon programme, composé d'une fonction algoLMS.m, et d'une simulation simuLMS.m :
---------------------------------------------------------algoLMS.m--------------------------------------------------------------
% Algorithme Least-Mean Square (LMS)
function [h,variance] = algoLMS(x,y,Q,mu)
N = 500;
delta = 10^-9;
RSB = 100;
h = [1 -0.7 0.5 -0.3];
L = length(h);
x = randn(1,N);
x = x-mean(x);
b = randn(1,N);
b = b-mean(b);
b = (b/std(b))*sqrt(var(x)*10^(-RSB/10));
y = filter(h,1,x);
% conditions initiales
Q = eye(L)/delta;
h = zeros (1,N);
for n = N:L
xn = x(n:-1:n-(N-1));
yn = h'*xn;
bn = yn-y;
mu = 2*mu;
h = h-(mu*bn*xn);
end
plot(b)
variance = var(bn);
---------------------------------------------------------simuLMS.m--------------------------------------------------------------
mu = linspace(0,1,1000);
for k = 1:1000
[h,variance(k)] = algoLMS(xn,yn,Q,mu(k));
end
plot(mu,variance)
-------------------------------------------------------------------------------------------------------------------------------------
et voici mon erreur lorsque je lance la simulation:
>> simuLMS
??? Undefined function or variable "xn".
Error in ==> simuLMS at 4
[h,variance(k)] = algoLMS(xn,yn,Q,mu(k));
Merci d'avance pour votre aide...
mi_k_l
Configuration: Windows XP Internet Explorer 6.0
3 réponses
-
salut tu peux mappleer sur skype alim_2007
-
slt je suis wahid
pour calculer la valeur mu il faut chercher les valeurs propre de ta matrice et aprés la valeur max et min de votre vecteur propre ok, je vais vous montrer :
sous matlab
exemple:
a=[1 2 3;4 5 6;7 8 9];
b=eig(a); elle va vous donner un vecteur
kmax=max(b);
kmin=min(b);
mu=2/(kmax+kmin);
et le problème sera résolu ok bye.-
salut wahid,
j'ai un gros souci, en fait je veux implementer avec matlab un filtre fir least-square, mais je ne sais sincerement comment le faire, j ai fouiller tous les documents possible, mais je ne m en sors pas. alors je suis tombé sur votre intervention concernant le least-Mean Square, alors je me dis que vous pourriez peut être m'aidez.
merci d avance
-
-
salut, vous de vez définir au prmier lieu vos donnés xn, yn,.. avant de lancer le programme