我正在寻找一种非常快速的方法来在Matlab中创建二进制数的唯一排列。
例如 - 在:[0 0 1]
成为 - 出:[1 0 0; 0 1 0; 0 0 1]
这就是我现在使用的:
M = [zeros(1,L),ones(1,up)];
n = numel(M);
k = sum(M);
c = nchoosek(1:n,k);
m = size(c,1);
binary = zeros(m,n);
binary(sub2ind([m,n],(1:m)'*ones(1,up),c)) = 1;
此代码工作正常并提供我期望的输出,但对于L=16
和更大的up
值,它的工作速度非常慢。
是否有任何提示我可以尝试改善较大值 L 的性能?
提前谢谢!