在Matlab中对1D向量上的范围进行矢量化选择

时间:2013-02-26 22:35:36

标签: matlab vectorization

这可能很简单,但我无法弄明白......我想创建一个范围矩阵,我可以使用以下循环来完成:

a=[0 10 22 35 42]; % sample initial  ranges
for i=1:length(a)
    b(i,:)= a(i):a(i)+5;
end

 b =
     0     1     2     3     4     5
    10    11    12    13    14    15
    22    23    24    25    26    27
    35    36    37    38    39    40
    42    43    44    45    46    47

如何进行矢量化?

2 个答案:

答案 0 :(得分:3)

以下两种情况都适用于您的示例:

b = bsxfun(@plus, repmat(a',1,6), 0:5);
b = bsxfun(@plus, a'*ones(1,6), 0:5);

您可以根据输入a和范围长度修改参数。

答案 1 :(得分:3)

a = 0:10:40;

b = bsxfun(@plus,a', 0:5)
b =

 0    1    2    3    4    5
10   11   12   13   14   15
20   21   22   23   24   25
30   31   32   33   34   35
40   41   42   43   44   45