在matlab中设置每行的某个列值

时间:2014-09-14 08:49:21

标签: matlab matrix

所以我有一个名为Z的150 X 4矩阵。

我对此做了一些操作,我剩下的就是Z了。

[o p] = min(Z, [], 2);

给我每行的列号。

我需要将每行的特定列设置为1并保持为零。

我想过这样做但是没有成功。

K = zeros(size(Z));
K(:, p) = 1;

2 个答案:

答案 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