Muf*_*ffo 8 matlab vectorization octave
我正在尝试向量化以下MATLAB操作:
给定具有索引的列向量,我想要一个具有相同行数和固定列数的矩阵.矩阵用零初始化,并包含索引指定位置的矩阵.
这是我已经写过的脚本示例:
y = [1; 3; 2; 1; 3];
m = size(y, 1);
% For loop
yvec = zeros(m, 3);
for i=1:m
yvec(i, y(i)) = 1;
end
Run Code Online (Sandbox Code Playgroud)
期望的结果是:
yvec =
1 0 0
0 0 1
0 1 0
1 0 0
0 0 1
Run Code Online (Sandbox Code Playgroud)
没有for循环可以实现相同的结果吗?我试过这样的事情:
% Vectorization (?)
yvec2 = zeros(m, 3);
yvec2(:, y(:)) = 1;
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
您可以在这里使用两种方法.
方法1:
y = [1; 3; 2; 1; 3];
yvec = zeros(numel(y),3);
yvec(sub2ind(size(yvec),1:numel(y),y'))=1
Run Code Online (Sandbox Code Playgroud)
方法2(单线):
yvec = bsxfun(@eq, 1:3,y)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
816 次 |
| 最近记录: |