生成具有约束的随机二进制矩阵
Generating a random binary matrix with a constraint
我们正在使用 MATLAB,我们想生成一个二进制矩阵,比如 x(i,j,k)
,其中对于每个 i
,这个条件都满足 sum_{j} \ sum_{k} x_{ijk} = 1
。有人可以帮忙吗?
为 j
和 k
生成随机下标,并使用 sub2ind
将下标转换为索引。
x = false(ni, nj, nk);
subi = 1:ni;
subj = randi(nj, 1, ni);
subk = randi(nk, 1, ni);
ind = sub2ind([ni, nj, nk], subi, subj, subk);
x(ind) = true;
要确认约束,您可以使用:
all(sum(sum(x, 3), 2) == 1)
我们正在使用 MATLAB,我们想生成一个二进制矩阵,比如 x(i,j,k)
,其中对于每个 i
,这个条件都满足 sum_{j} \ sum_{k} x_{ijk} = 1
。有人可以帮忙吗?
为 j
和 k
生成随机下标,并使用 sub2ind
将下标转换为索引。
x = false(ni, nj, nk);
subi = 1:ni;
subj = randi(nj, 1, ni);
subk = randi(nk, 1, ni);
ind = sub2ind([ni, nj, nk], subi, subj, subk);
x(ind) = true;
要确认约束,您可以使用:
all(sum(sum(x, 3), 2) == 1)