Probleme algorithme des moindres sous matlab

zmeryem Messages postés 3 Statut Membre -  
 Mouhamed Aoun -
Bonjour,
svp j'ai ecris un programme sous matlab (qui concerne traitement de signal ) et lors de compilation il m'indique tout le temps une erreur sur qui concerne la boucle for.
En fait, il s'agit de programmer sous matlab l'algorithme des moindres carrés récursifs :
voici le programme :
N= 500; h=[1 -2.5 1]; RSB=10; L=length(h)-1; delta =10^(-9);
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)+b;
%iinitialisation des parametres de l'algorithme
Q=eye(L+1)/delta; h1=zeros(L+1,1);
for i=1:N-L // probleme
xn(:)=x(i+L:-1:i);
Qx=Q*xn;
Kn=Qx/(1+xn'*Qx); h1=h&+Kn*(y(i+L)-xn*h1');
Q=Q-Kn*(xn'*Q);
e(:,i)=h1-h;
end

merci
Configuration: Windows XP
Internet Explorer 6.0

4 réponses

  1. sfel Messages postés 1645 Statut Membre 430
     
    bonsoir,

    déjà ne fait pas
    // probleme

    mais % probleme

    sinon, peut-être le N-L

    utilise une variable temporaire juste avant, par exemple temp

    temp=N-L;
    for i=1:temp

    1
    1. Mouhamed Aoun
       
      c pa logik , il faut bien reviser le cour de l'AIP ! merci MR Dhawi
      0
  2. zmeryem Messages postés 3 Statut Membre 1
     
    ca na pa marché :(
    1
  3. linda
     
    essaie ça:

    N= 500;
    h=[1 -2.5 1];
    RSB=10;
    L=length(h)-1;
    delta =10^(-9);
    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)+b;
    %iinitialisation des parametres de l'algorithme
    Q=eye(L+1)/delta; h1=zeros(L+1,1);

    for i=1:N-L %probleme
    xn= x(i+L:-1:i);
    Qx = Q * xn';
    Kn= Qx /(1 + xn*Qx);
    h1 = h'+ Kn* y(i+L)-xn*h1;
    Q = Q-Kn*(xn*Q);
    e(:,i)=h1'-h;
    end
    0