2011-07-05 3 views
2

Supposons que j'ai le vecteur a=[1;2;2] je veux créer le vecteur b=[1/2;1;2] deviding chaque valeur de la ith ligne d'une avec la valeur ith+1, la dernière valeur peut Ne soyez pas divisés avec quoi que ce soit donc je laisse comme ça. J'ai fait un code simple, mais j'ai le message d'erreur suivant: "L'index dépasse les dimensions de la matrice", j'ai donc besoin de votre aide. Exemple de codeComment puis-je diviser chaque ligne d'un vecteur avec sa valeur de ligne suivante dans Matlab

a=rand(3,1); 
for i=1:length(a) 
    b(i)=a(i)/a(i+1) 
end 

Merci beaucoup pour votre aide

Répondre

4

Vous pouvez essayer:

b=a./[a(2:end);1]; 

Pas assez, mais il fonctionne. Le message d'erreur "Index excède les dimensions de la matrice" vient de votre tentative de référencer a (i + 1) lorsque i = longueur (a) puisque cet élément n'existe pas.

+3

Ou 'a (1: fin-1) ./ a (2: fin)'. Assez ou pas, les solutions vectorisées sont généralement meilleures. – abcd

+0

Merci beaucoup, ça marche super –

Questions connexes