Matlab中如何表示矩阵中的二进制数?

计算科学 matlab 矩阵
2021-12-04 19:11:22

这是一个相当简单的问题,但我的 Matlab 知识仍然非常有限。

我想取一个给定的二进制数(或者更确切地说,一个双字符串)的长度mn并生成一个m×n其条目对应于位值的矩阵。

例如,如果给定的位串是b=1001110101(这是基数为 10 的数字 629 的二进制值),并且由于b长度为 10,可以表示为 2*5,我正在寻找一系列要转换的 Matlab 命令b到这个矩阵A

A=(1001110101).

我过去曾使用单元格和字符串命令接近过,但实际上我似乎从未真正得到正确意义上的矩阵,我可以计算类似的东西AA.

如果有帮助,我的应用程序将始终生成给定长度的位串b=mn. 那是,mn是已知的,因此当涉及到所需矩阵的大小时,无需猜测。

1个回答

Communications Toolbox 中有一个 MATLAB 函数,de2bi用于将十进制数转换为二进制向量。一旦你得到二进制向量,你就可以reshape了。reshape命令保留按列排序,因此您可能需要转置维度(即,生成n经过m矩阵),然后转置生成的重构矩阵(通过transpose)运算符。

如果您没有通讯工具箱,您可以de2bi使用内置命令进行模拟。如果x是您的十进制数,那么b = num2str(dec2bin(x.))-'0'在此MathWorks Central 帖子之后可能会起作用。(不过,我没有测试过这个函数,因为我没有个人 MATLAB 许可证。)