2012-05-07 22 views
2

嗨,我正在寻找一种方法来从近端到接近开始采取一个数组的切片。我知道我可以分两部分来完成,然后添加它们,但它似乎是我认为matlab可能已经内置了这样一个通常需要的操作,但我在搜索中找不到任何信息。 为了澄清,我想能够说:提前Matlab如何轻松循环回合阵列

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

感谢。

+2

不认为有办法做到这一点,虽然你可以做它通过简洁的指标如:'y([end-3:end 1:3])'或'y([8:end 1:3])' – Richante

+0

辉煌的,这正是我所追求的。 – wookie1

回答

1

你可以试试这个:

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

这将返回

ans = 

    8  9 10  1  2  3 
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)等