求助:如何用Matlab直接创建3x5尺寸的所有二进制矩阵?
生成3x5所有二进制矩阵的Matlab高效方案
Matlab没有直接生成指定大小所有二进制矩阵的内置函数,但可以通过优化向量化操作大幅提升效率,避免耗时的循环操作:
核心步骤与代码
- 生成对应十进制数:0到2^15-1的整数,每个数对应唯一的15位二进制组合
- 批量转二进制矩阵:用内置函数
dec2bin一次性完成所有二进制字符串到数值矩阵的转换 - 重塑为目标矩阵集合:通过
reshape直接将二维二进制向量矩阵转为三维矩阵,第三维对应每个独立的3x5矩阵
% 生成所有0到2^15-1的整数(共32768个) all_dec = 0:(2^15 - 1); % 转换为15位二进制数值矩阵,每行对应一个二进制向量 all_bin = dec2bin(all_dec, 15) - '0'; % 重塑为3x5x32768的三维矩阵,第三维的每个切片就是一个3x5二进制矩阵 all_matrices = reshape(all_bin', 3, 5, []);
可选:转为Cell数组
如果需要将每个3x5矩阵单独存储为Cell元素,可使用mat2cell:
mat_cell = mat2cell(all_matrices, 3, 5, ones(1, size(all_matrices,3)));
效率说明
这个方法全程使用Matlab内置的向量化函数,dec2bin和reshape都是高度优化的底层实现,避免了手动循环的开销,比逐向量转换的方式快很多。
内容的提问来源于stack exchange,提问作者Robin Kurtz
相关产品推荐
相关产品推荐

