如何用 0 和 1 的所有可能组合填充数组?

2024-01-06

我有一个算法,0和1的可能组合数量可以达到2^39。假设我有 n=2 种情况,或者 n1=2^2=4 0 和 1 的组合:00,01,10,11。从中我可以创建一个数组 a=zeros(n,n1) 并填充列可能的组合?这意味着第一列有 00,第二列 01,第三列 10,最后 11。我希望这是动态的,这意味着 n 可以是 1,2,3...,39,显示数组将是 a=zeros(n, 2^n)。感谢您的回复!


只是为了一般性理解:为什么你认为你需要一个由 0 到 2³⁹ 的所有整数的所有组合组成的数组?该阵列将消耗 39×2³⁹/1000⁴ ≈ 21TB 的 RAM...上次我检查时,只有世界上最先进的超级计算机才有这样的资源,并且大多数使用这些机器的人认为生成这样的阵列非常浪费...

无论如何,为了完整性,对于任何N,这是最简单的解决方案:

P = dec2bin(0:(2^N)-1)-'0'

但是,有一点建议:dec2bin输出字符数组。如果你想数值数组,你可以减去这个字符'0',但是,这给了你一个数组doubles根据MATLAB的规则:

>> P = dec2bin(0:(2^3)-1)-'0';
>> whos P
  Name      Size            Bytes  Class     Attributes

  P         8x3               192  double                      

如果您想最大限度地减少内存消耗,请生成一个逻辑数组:

>> P = dec2bin(0:(2^3)-1)=='1';
>> whos P
  Name      Size            Bytes  Class      Attributes

  P         8x3                24  logical     

如果你还想加快执行速度,可以直接使用标准算法:

%// if you like cryptic one-liners
B1 = rem(floor((0:pow2(N)-1).' * pow2(1-N:0)), 2) == 1;

%// If you like readability
B = false(N,pow2(N));
V = 0:pow2(N)-1;
for ii = 1:N
    B(ii,:) = rem(V,2)==1;
    V = (V-B(ii,:))/2;
end

最后一个(循环)是所有解决方案中最快的N(至少在 R2010b 和 R2013a 上),并且它具有最小的峰值内存(仅为神秘单行的 1/N)。

所以我会选择那个:) 但是,那只是我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用 0 和 1 的所有可能组合填充数组? 的相关文章

  • 如何动态地将 &autoplay=1 添加到 youtube 嵌入代码?

    这是我网站上的 YouTube 嵌入代码示例
  • $0 和 $1 在 Swift 闭包中意味着什么?

    let sortedNumbers numbers sort 0 gt 1 print sortedNumbers 谁能解释一下什么 0 and 1在斯威夫特中意味着什么 另一个样本 array forEach actions append
  • 使用日期 Swift 3 对字典数组进行排序

    我有一个名为 myArray 的数组 其中添加了字典 我希望该字典按时间排序 这是字典中的键 那个时间是在 String 中 时间的日期格式为 yyyy MM dd HH mm ss 我尝试使用下面的代码解决方案 但给出了 从 字符串转换
  • 将数组传递给函数 - 指针与引用(C++ 与 C)

    我有一个关于将数组传递给函数的最佳实践的广泛问题 因此 过去当我用 C 语言编程时 我想要一个函数的输入是一个数组 我会声明该函数的输入参数是一个指针 这效果相对较好 然而 我已经开始更多地使用 C 进行编程 并试图确定将数组传递到函数中的
  • Swift:配对数组元素的最佳方法是什么

    我遇到了一个需要成对迭代数组的问题 最好的方法是什么 或者 作为替代方案 将数组转换为对数组 然后可以正常迭代 的最佳方法是什么 这是我得到的最好的 这个需要output成为一个var 而且它并不是很漂亮 有没有更好的办法 let inpu
  • 如何将复杂的 csv 文件导入到 Matlab 中的数值向量

    我想知道我们应该如何读取由字符串 双精度数和字符等组成的复杂 csv 文件 例如 您能否提供一个可以在此 csv 文件中提取数值的成功命令 Click here http www ecb europa eu stats money yc d
  • 正确使用 fft2 和 fftshift 进行着色形状

    我正在尝试从 Trucco Verri 文本 3d 计算机视觉入门技术 中看到的着色算法重新创建经典形状 但我很难理解 matlab 中的 fft 函数 本质上 我需要使用可积性约束来获取图像的深度 Z 我不确定在这种情况下何时使用 fft
  • 通过链接导航多个对象而不重复

    我正在尝试浏览一堆带有其他对象链接的对象 我想从 id 1 开始并浏览每个对象 有些对象会循环回到之前的对象 所以我想确保每个对象只查看一次 否则我会陷入无限循环 我还希望能够通过链接导航来判断哪些对象无法访问 我认为导航顺序并不重要 这是
  • 如何使用现有列表创建二维数组?

    例如 我有一个名为 mazeline 的 txt 数据 如下所示 abcd cdae korp 所以我首先列出了 3 个清单 mazeline readmaze split mline0 list mazeline 0 mline1 lis
  • 在汇编中初始化字符串数组

    我想创建一个数据数组 在初始化数据部分保存 5 个字符串 每个字符串正好有 4 个字符 每个字符串都有一些初始数据 例如第一个字符串的 abcd 第二个字符串的 efgh 等等 无效的 0任何字符串都不需要字符 如何用汇编语言初始化字符串数
  • Java 泛型从类创建数组

    我有一个层次结构 其中正方形 三角形和圆形都从形状延伸 我有一个工作方法 public void someMethod File file new File File with squares ThirdPartyClass foo new
  • 在 CodeIgniter 中将数组与 Calendar 类一起使用

    我正在尝试为我的日历应用程序创建一个相当复杂的数组 它应该包含日期 日期名称 类型 和事件 如果有 我已经创建了这个 dates 22 day gt Friday type gt weekday 23 day gt Saturday typ
  • 快速有效地计算已知特征值的特征向量

    我的问题的简短版本 计算矩阵特征向量的最佳方法是什么A 如果我们已经知道属于特征向量的特征值呢 更长的解释 我有一个很大的随机矩阵A由于它是随机的 因此具有非负左特征向量x 这样A Tx x 我正在寻找快速有效的方法来数值计算这个向量 最好
  • 在 Primefaces 中以编程方式创建命令按钮

    我正在尝试创建一个带有输入文本和命令按钮的动态表单 一切正常 但是当我单击命令按钮时 永远不会调用操作侦听器 请提出我做错了什么或者这是否是 PF 或 Mojarra 的错误 代码如下 panel new Panel panel setHe
  • 动态二维数组非连续内存C++

    假设我将二维数组的地址及其二维数组的行和列传递给函数 该函数会将二维数组的地址视为一维数组 例如 int Matrix 如果我执行下面的代码 int arr arr new int row for int i 0 i lt row i ar
  • 如何打印数组中每个单词之间的空格

    我记得在 w3school 上看到过一个函数 你可以打印出数组的所有单词并在它们之间添加一个空格 但无论我如何谷歌我都找不到它 其外观示例 function printWords var array Car Bus Motorcykle p
  • PHP—array_merge_recursive() - 相同键没有数组

    php a php gt data1 tag gt div classes gt 1 2 3 php gt data2 tag gt section classes gt 2 3 4 5 6 php gt result array merg
  • MATLAB 类的 Description 和DetailedDescription 属性

    内置 MATLAB 类具有 Description 和 DetailedDescription 属性的值 gt gt handle ans meta class handle Package meta Properties Name han
  • 如何使用 jQuery 通过 Ajax 发送复选框数组的值?

    我有一个包含很多表单字段的表单 12 x n 行 每行中的第一个字段 代表产品 是一个类似于以下内容的复选框
  • array_merge 更改键

    我得到以下数组 arr array 6 gt Somedata 7 gt Somedata1 8 gt Somedata2 问题是 当我使用array merge array Select the data arr 它确实将数组键更改为 A

随机推荐