How do I make a vector into a loop?

조회 수: 2 (최근 30일)
Laura
Laura 2013년 2월 6일
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