Matlab 如何将二进制值列表转换为int32类型?

Matlab 如何将二进制值列表转换为int32类型?,matlab,binary,type-conversion,int32,Matlab,Binary,Type Conversion,Int32,我在MATLAB工作区中有一个小端格式的二进制数列表,我想将它们转换为int32a是由0和1组成的双向量,如下所示: a = [0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 1 1 1 1 1 0 0 0]; int32(a)为我提供了32个二进制值的行向量,而无需将其转换为32位整数。可以修改(特定于无符号整数)以处理有符号整数。最简单的方法是将输出从那里转换为,然后转换为使用。基于: 如果您知道位模式所使用的符号(我猜是),那么

我在MATLAB工作区中有一个小端格式的二进制数列表,我想将它们转换为int32
a
是由0和1组成的双向量,如下所示:

a = [0 0 0 1 1 0 0 1   1 1 1 0 1 0 1 0   0 0 0 1 1 0 0 0   1 1 1 1 1 0 0 0];
int32(a)
为我提供了32个二进制值的行向量,而无需将其转换为32位整数。

可以修改(特定于无符号整数)以处理有符号整数。最简单的方法是将输出从那里转换为,然后转换为使用。基于:

如果您知道位模式所使用的符号(我猜是),那么可以通过计算符号位并直接在计算中使用
typecast

如果
a
是一个N×32矩阵,您可以简单地用链接解决方案中的矢量化计算替换
和(…)

b = typecast(uint32(a*(2.^(0:size(a, 2)-1)).'), 'int32');

a
是一个逻辑向量还是字符向量?它是一个双向量,我从一个文件中读取它作为fread(f,'ubit1')。p、 我没有使用“int32”,因为我是通过位模式删除文件的某些部分。您也可以直接计算数字,例如,定义一个二进制权重向量,然后将其乘以您的向量。然而,如果向量是在例如2的补码中,你可以通过定义进行扩展,Mantanj提出了一个很好的观点。我们应该如何解释(一的补码,二的补码,偏移二进制)?字节顺序是这样的。[2...1][4...3][6...5][8...7]. 8为最高有效位,1为最低有效位。[]是一个字节,并且。。。指示该字节中的其他6位。如果8是0,数字是正的,如果1是负的。谢谢你们的建议,我将创建一个带权重的向量并将其相乘。谢谢你们,它很有效。如何将其应用于矩阵的每一行,例如n乘以32矩阵?
b = typecast(uint32(a*(2.^(0:size(a, 2)-1)).'), 'int32');