嗨,我正在寻找一种方法来从近端到开始附近获取数组的一部分。我知道我可以分两部分执行此操作,然后添加它们,但这似乎是一个普遍需要的操作,我认为 matlab 可能已经内置了它,但我在搜索中找不到任何信息。为了澄清,我想说:
y = 1:10
y(-3:3) or y(8:3)
returns:
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(end),-1 对应于 y(end-1),依此类推。
你可以试试这个:
y = 1:10;
n = 3;
y([end-n+1:end 1:n]);
这返回
ans =
8 9 10 1 2 3