我希望您建议编写一个 Matlab 代码,创建一个大小为 31x5
的二进制矩阵 A
,这样
A
的第一行是[1 1 1 1 1]
从
A
的第2个到第6个,每行只有一次1
[1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1]
从第 7 行到第 16 行,每行有
1
两次[1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 ...]
从第 17 行到第 26 行,每行有
1
3 次从第 26 行到第 31 行,每行有
1
四次
我可以手动进行,但我想知道是否有更快的方法。
最佳答案
这是一种方法:
- 生成所有可能包含零和一的行(全零或全一除外);
- 根据行总和(原子)对行进行排序,然后根据否定的行值对行进行排序,以产生所需的顺序;
- 在前面添加一行 1 来构建结果。
N = 5;
A = dec2bin(1:2^N-2)-'0'; % step 1
[~, ind] = sortrows([sum(A,2) -A]); % step 2
result = [ones(1,N); A(ind,:)]; % step 3
关于arrays - 在 Matlab 中创建二进制矩阵,报告数量不断增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63113114/