所以我有一个名为Z的150 X 4矩阵。
我对此做了一些操作,我剩下的就是Z了。
[o p] = min(Z, [], 2);
给我每行的列号。
我需要将每行的特定列设置为1并保持为零。
我想过这样做但是没有成功。
K = zeros(size(Z));
K(:, p) = 1;
答案 0 :(得分:2)
您可以浏览sparse
:
K = full( sparse( 1:size(Z,1), p.', 1, size(Z,1), size(Z,2) ) );
或者,您可以使用sub2ind
:
K = zeros( size(Z) );
K( sub2ind( size(K), 1:size(K,1), p.' ) ) = 1;
如果您确定每行中只有一个最大元素,则可以
K = bsxfun( @eq, Z, o );
答案 1 :(得分:1)
一种方法 -
K = zeros(size(Z))
K((p-1)*size(Z,1)+[1:size(Z,1)]')=1