2011-03-29 5 views
1

Comment obtenez-vous tous les indices d'un vecteur dans une boucle, cela est de passer une fonction des valeurs de vecteurboucle en Matlab

vector =[ 20 , 30 , 60 ,45 ,26 ,17 ,28,9, 10,3 ] 


n = 10 
for i=1:n 
    somefunt(vector(i)); 
end 

Donc, cela se traduit

somefunt(vector(20)); 
somefunt(vector(30)); 
somefunt(vector(60)); 
... 

Comment fais ça?

Répondre

4

Si vous voulez passer toutes les valeurs vector à votre fonction somefunt dans un for loop, vous pouvez simplement utiliser vector comme vos valeurs en boucle comme ceci:

for i = vector 
    somefunt(i); 
end 

Ce sera équivalent à:

somefunt(20); 
somefunt(30); 
somefunt(60); 
... 
1

en plus de ce @gnovice écrit, si vous voulez que l'index de l'élément vectoriel vous pouvez utiliser la fonction ismember:

vector =[ 20 , 30 , 60 ,45 ,26 ,17 ,28,9, 10,3 ] 
for i = vector 
    [TempFlag, MemberInd] = ismember(i, vector); 

    fprintf('vector(%d) is %d\n', MemberInd, i); 
    % somefunt(i); 
end 
+0

Si vous avez simplement besoin de l'index, vous pouvez remplacer l'appel de 'ismember' par' MemberInd = find (vector == i); ' –