Matlab如何轻松循环圆阵

时间:2012-05-07 14:14:17

标签: matlab slice

嗨,我正在寻找一种从接近结束到接近开始的一个阵列片段的方法。我知道我可以分两部分来做,然后添加它们,但它似乎是一个常见的操作,我认为matlab可能已经内置了但我在搜索中找不到任何信息。 澄清我希望能够说:

y = 1:10
y(-3:3) or y(8:3)
returns:
8 9 10 1 2 3

提前致谢。

2 个答案:

答案 0 :(得分:3)

实际上 是一种方法(不将其分成索引的负面和正面部分的串联):在所需范围内使用模运算符:

>>  y = 1:10;
>>  y(mod([-3:3]-1,numel(y))+1)

ans =

     7     8     9    10     1     2     3

这个结果由7个数字组成(与你想要的[8 9 10 1 2 3]相反),这是合乎逻辑的,因为-3:3实际上跨越了7个数字。

数字0对应于此方法的y(结束),-1对应于y(结束-1)等。

答案 1 :(得分:1)

你可以试试这个:

y = 1:10;   
n = 3;   
y([end-n+1:end 1:n]);

返回

ans =

     8     9    10     1     2     3