How do I make a vector into a loop?

2 次查看(过去 30 天)
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 个评论
Azzi Abdelmalek
Azzi Abdelmalek 2013-2-6
Can you give a short example: if x=[1 2 3 4], what should be the result?

请先登录,再进行评论。

采纳的回答

Dan K
Dan K 2013-2-6
编辑:Dan K 2013-2-6
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 个评论
Matt Tearle
Matt Tearle 2013-2-6
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 2013-2-7
Thanks this is what i meant and ive managed to do it now. Thanks again.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by