我正在尝试创建一个 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];
最佳答案
使用bsxfun
将 @plus
或 @minus
作为 b
上的操作说明符 作为列向量和偏移行向量对于 @plus
说明符,从 -4 到 0
,对于 @minus
说明符,从 4 到 0
作为最后一个参数给它。因此,实现看起来像这样 -
bsxfun(@plus,b(:),-4:0)
bsxfun(@minus,b(:),4:-1:0)
sample 运行-
>> 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
关于matlab - 创建包含来自另一个数组的连续数字的新矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33103732/