例如
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,那么您可以尝试这个。如果要测试的矩阵是m
xn
矩阵A
,那么
sum(A == 1,2)
应该产生一个(m x 1)
所有元素都等于 的矩阵n-1
。类似地,如果 的每一行A
只有一个零,那么
sum(A == 0,2)
应该返回一个(m x 1)
元素都等于 1 的矩阵。然后你需要的矩阵类型应该满足
sum(sum(A == 1,2) == (n-1)) = m
和
sum(sum(A == 0,2) == (n-1)) = m
我不确定这是否是您实际要问的,因为您的问题很不清楚,但这确实可以满足问题标题本身的要求(当然取决于您对效率的定义)。