arrays - 在 Matlab 中创建二进制矩阵,报告数量不断增加

标签 arrays matlab matrix

我希望您建议编写一个 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. 生成所有可能包含零和一的行(全零或全一除外);
  2. 根据行总和(原子)对行进行排序,然后根据否定的行值对行进行排序,以产生所需的顺序;
  3. 在前面添加一行 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/

相关文章:

python - 如何从 map 中获取值并将它们设置为 numpy 矩阵行?

java - 使用嵌入式 for 循环的 NxN 矩阵

javascript - 使用 nodejs 规范化对象数组中的缺失值

matlab - 基于单列变量创建图

c++ - openCV 存储文件错误 :

matlab - 查找句柄在作用域中的存储位置

matlab - webread给出的结果与网页的 'View Page Source'不同

java - 查找数组中任何重复的元素

arrays - 如何避免快速创建对象数组的副本

arrays - 如何在 smarty 模板中追加到多维数组?