Math 在任何二进制矩阵中,是否有任何有效的方法在matlab中确认一行中的一个0和项目的其余部分为1?

Math 在任何二进制矩阵中,是否有任何有效的方法在matlab中确认一行中的一个0和项目的其余部分为1?,math,matrix,binary,matlab,Math,Matrix,Binary,Matlab,比如说 A=[0 0 0; 1 1 1; 1 0 0; 1 1 0; 0 0 1]; 应用函数后 A=[1 1 0; 1 1 0; 1 1 0; 1 0 1]; 一行一零,其余的都是一。如果都是一,随机放一个零。如果找到多个零,则随机取一,并将所有零转换为一 如果您所要求的是一种检测每一行包含单个零的方法,而其余的行元素都等于1,那么您可以尝试此方法。如果要测试的矩阵是AmxnmatrixA sum(A == 1,2) 应生成一个(m x

比如说

A=[0 0 0;
   1 1 1;
   1 0 0; 
   1 1 0; 
   0 0 1];
应用函数后

A=[1 1 0;
   1 1 0;
   1 1 0; 
   1 0 1];

一行一零,其余的都是一。如果都是一,随机放一个零。如果找到多个零,则随机取一,并将所有零转换为一

如果您所要求的是一种检测每一行包含单个零的方法,而其余的行元素都等于1,那么您可以尝试此方法。如果要测试的矩阵是A
m
x
n
matrix
A

 sum(A == 1,2)
应生成一个
(m x 1)
矩阵,所有元素均等于
n-1
。类似地,如果
A
的每一行只有一个零,那么

sum(A == 0,2)
应返回元素均等于1的
(m x 1)
矩阵。您需要的矩阵类型应该满足

sum(sum(A == 1,2) == (n-1)) = m


我不确定这是否是您实际提出的问题,因为您的问题很不清楚,但这确实符合问题本身提出的要求(当然取决于您对高效的定义)。

我不明白您是如何从第一个数组转换到第二个数组的。请编辑你问题的文本——标题已经太长了,实际上不能很好地解释问题。我也不明白……如果没有for loop vai matlab,这是可能的
sum(sum(A == 0,2) == (n-1)) = m