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)
使用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)