就01矩阵保证每一行的和大于等于1怎么做啊,一个大矩阵,内部只有部分元素可以为1。
这样可以么?
先随机生成0-1矩阵,看这个矩阵里面的行是不是和大于等于1,如果这行全是0就不满足条件,对这行随机取一个元素置为1
1.首先生成一个0矩阵
2.每行随机个元素用1代替
主要思路:
参考代码如下:
%%
% 设置一个10行6列的0矩阵
% 行列数可以自己更改
A = zeros(10, 6);
for i = 1 : size(A, 1)
% 生成一个随机数,代表该行有几个非零元素
rownum = randi([1, size(A, 2)])
% 生成一组随机数,代表该行的idx列为1
% 可能有部分为重复的数,但能保证每行有一个非零元素
idx = randi(([1, size(A, 2)]), 1, rownum);
A(i, idx) = 1;
end
第一次运行:
A =
1 1 0 0 0 1
1 0 0 0 0 0
0 0 0 1 0 0
1 0 0 0 1 1
0 0 0 0 0 1
0 1 1 1 1 1
1 0 0 0 0 0
1 1 1 1 0 0
1 1 1 1 0 1
1 1 0 0 0 1
第二次运行:
A =
0 1 1 0 1 1
1 0 0 0 1 0
1 0 1 0 0 0
0 1 1 0 0 1
1 0 1 0 1 1
1 1 0 1 0 0
1 0 0 0 0 1
1 0 1 0 0 0
0 0 0 0 0 1
1 1 0 0 0 0
第三次运行:
A =
1 1 0 0 0 1
1 1 0 0 0 0
0 0 0 1 0 0
1 0 0 1 1 1
1 1 1 0 1 0
1 0 0 1 1 0
0 1 0 1 1 0
1 0 1 0 1 0
1 0 0 1 1 0
0 0 0 0 1 1