2

嗨,我正在寻找一种方法来从近端到开始附近获取数组的一部分。我知道我可以分两部分执行此操作,然后添加它们,但这似乎是一个普遍需要的操作,我认为 matlab 可能已经内置了它,但我在搜索中找不到任何信息。为了澄清,我想说:

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

提前致谢。

4

2 回答 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),依此类推。

于 2012-05-07T14:48:47.170 回答
1

你可以试试这个:

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

这返回

ans =

     8     9    10     1     2     3
于 2012-05-07T14:37:02.980 回答