0

我有 1x10 矢量A

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

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

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

比如vector的第一个元素A是11,那么我就去vector中的索引11,B获取这个索引的值(第11个值)和它之前的10个项目(从1到10)和10个项目的值之后(从 12 到 21),对于A.

没有循环可以做到吗?

4

2 回答 2

2

这是关于使用bsxfun

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

现在 row nin包含与 element inR对应的元素。如果你想在向量中使用它:nA

R = reshape(B(bsxfun(@plus, A(:), -10:10)), 1, []);
于 2013-08-23T06:36:21.347 回答
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
于 2013-08-23T06:30:42.897 回答