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

toy*_*lıç 4 matlab matrix vectorization

我正在尝试创建一个矩阵n x 5.矩阵将由另一个包含整数的数组构成.

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

b=[6 8 9 11 13 16 17 ];
A=zeros(length(b),5);
Run Code Online (Sandbox Code Playgroud)

使用我想要获取的代码后:

A=[2:6;
   4:8;
   5:9;
   9:13;
   12:16;
   13:17];
Run Code Online (Sandbox Code Playgroud)

Div*_*kar 5

使用bsxfun带有@plus@minus作为操作符b的列向量,并从去偏移行向量-4 to 0@plus指示符和4 to 0用于@minus符作为最后一个参数给它.因此,实现看起来像这样 -

bsxfun(@plus,b(:),-4:0)
bsxfun(@minus,b(:),4:-1:0)
Run Code Online (Sandbox Code Playgroud)

样品运行 -

>> 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
Run Code Online (Sandbox Code Playgroud)