创建包含来自另一个数组的连续数字的新矩阵

时间:2015-10-13 13:17:42

标签: matlab matrix vectorization

我试图创建一个n x 5的矩阵。矩阵将由另一个包含整数的数组构成。

所有行都以数字减4开头,并以数组中的数字结尾。我试图找到一种不使用for-loop的有效方法。 为了说明这种情况,我举了一个例子:

b=[6 8 9 11 13 16 17 ];
A=zeros(length(b),5);

使用我想要的代码后:

A=[2:6;
   4:8;
   5:9;
   9:13;
   12:16;
   13:17];

1 个答案:

答案 0 :(得分:5)

@plus上使用bsxfun @minusb作为操作说明符作为列向量和偏移行向量-4 to 0说明符为@plus4 to 0说明符为@minus作为最后一个参数。因此,实现看起来像这样 -

bsxfun(@plus,b(:),-4:0)
bsxfun(@minus,b(:),4:-1:0)

示例运行 -

>> b
b =
     6     8     9    11    13    16    17
>> bsxfun(@plus,b(:),-4:0)
ans =
     2     3     4     5     6
     4     5     6     7     8
     5     6     7     8     9
     7     8     9    10    11
     9    10    11    12    13
    12    13    14    15    16
    13    14    15    16    17
>> bsxfun(@minus,b(:),4:-1:0)
ans =
     2     3     4     5     6
     4     5     6     7     8
     5     6     7     8     9
     7     8     9    10    11
     9    10    11    12    13
    12    13    14    15    16
    13    14    15    16    17