向量元素是另一个向量Matlab的索引

时间:2013-08-23 06:14:53

标签: matlab

我有1x10向量A

A = [11 22 33 44 55 66 77 88 99 111]

A中的每个值代表向量B中的索引,即1x200。

我想获取向量A中的每个值,并转到向量B中此值的索引,并获取此索引的值以及之前的10个项目和之后的10个项目。

例如,向量A中的第一个元素是11,所以我将转到向量B中的索引11并获取此索引的值(第11个值)和值的值之前的10个项目(从1到10)和之后的10个项目(从12到21),A中的每个元素都相同。

可以没有循环吗?

2 个答案:

答案 0 :(得分:2)

以下是使用bsxfun

R = B(bsxfun(@plus, A(:), -10:10));

现在n中的行R包含n中与元素A对应的元素。如果你想在矢量中使用它:

R = reshape(B(bsxfun(@plus, A(:), -10:10)), 1, []);

答案 1 :(得分:0)

直接的方式,循环。 你需要多快?简单的循环方法不够快吗?

C = zeros(21, length(A))
for k = 1:length(A)
    C(:,k) = (-10:10)' + A(k);
end
C = C(:);

B(C)    # returns the elements you seek
相关问题