How do I make a vector into a loop?

2 views (last 30 days)
Laura
Laura on 6 Feb 2013
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 Comment
Azzi Abdelmalek
Azzi Abdelmalek on 6 Feb 2013
Can you give a short example: if x=[1 2 3 4], what should be the result?

Sign in to comment.

Accepted Answer

Dan K
Dan K on 6 Feb 2013
Edited: Dan K on 6 Feb 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 Comments
Matt Tearle
Matt Tearle on 6 Feb 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)))
Laura
Laura on 7 Feb 2013
Thanks this is what i meant and ive managed to do it now. Thanks again.

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!