How do I make a vector into a loop?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
for example I need to make the last element (N) in my vector such that (N+1) will correspond to the first element in the vector?
1 commentaire
Azzi Abdelmalek
le 6 Fév 2013
Can you give a short example: if x=[1 2 3 4], what should be the result?
Réponse acceptée
Dan K
le 6 Fév 2013
Modifié(e) : Dan K
le 6 Fév 2013
I think I understand... Are you saying that if you have a five element vector A(1:5), then you want A(6) to actually reference A(1)?
One way I can see to do this is to create a custom index function as an anonymous function. This is a way of doing it for reading only.
>> A = 1:5
A =
1 2 3 4 5
>> B = @(A,ind)A(mod(ind,length(A)))
B =
@(A,ind)A(mod(ind,length(A)))
>> B(A,2)
ans =
2
>> B(A,7)
ans =
2
>> B(A,8)
ans =
3
Here's a quick way of doing it for writing:
>> A = 1:5;
>> realind = @(x)mod(x,length(A));
>> A(realind(27))
ans =
2
>> A(realind(27)) = 5
A =
1 5 3 4 5
>>
2 commentaires
Matt Tearle
le 6 Fév 2013
Nice! Slight glitch, though: B(A,5) will barf. You need to tweak the mod calculation:
>> B = @(A,ind)A(1+mod(ind-1,length(A)))
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!