我试图创建一个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];
答案 0 :(得分:5)
在@plus
上使用bsxfun
@minus
或b
作为操作说明符作为列向量和偏移行向量-4 to 0
说明符为@plus
,4 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