嗨,我正在寻找一种方法来从近端到接近开始采取一个数组的切片。我知道我可以分两部分来完成,然后添加它们,但它似乎是我认为matlab可能已经内置了这样一个通常需要的操作,但我在搜索中找不到任何信息。 为了澄清,我想能够说:提前Matlab如何轻松循环回合阵列
y = 1:10
y(-3:3) or y(8:3)
returns:
8 9 10 1 2 3
感谢。
嗨,我正在寻找一种方法来从近端到接近开始采取一个数组的切片。我知道我可以分两部分来完成,然后添加它们,但它似乎是我认为matlab可能已经内置了这样一个通常需要的操作,但我在搜索中找不到任何信息。 为了澄清,我想能够说:提前Matlab如何轻松循环回合阵列
y = 1:10
y(-3:3) or y(8:3)
returns:
8 9 10 1 2 3
感谢。
你可以试试这个:
y = 1:10;
n = 3;
y([end-n+1:end 1:n]);
这将返回
ans =
8 9 10 1 2 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)等
不认为有办法做到这一点,虽然你可以做它通过简洁的指标如:'y([end-3:end 1:3])'或'y([8:end 1:3])' – Richante
辉煌的,这正是我所追求的。 – wookie1