B. *_* Z. 2 binary matlab int32 type-conversion
我在MATLAB工作区中有一个小端格式的二进制数列表,我想将它们转换为int32. a是一个零和一的双向量,如下所示:
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];
Run Code Online (Sandbox Code Playgroud)
int32(a) 给我一个32位二进制值的行向量,而不将其转换为32位整数.
可以修改此相关问题的解决方案(特定于无符号整数)以处理有符号整数.最简单的方法是将输出从那里uint32转换为,然后转换为int32使用typecast.建立在这个解决方案:
>> 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];
>> b = typecast(uint32(sum(pow2(find(a)-1))), 'int32')
b =
int32
521688984
Run Code Online (Sandbox Code Playgroud)
如果您知道用于位模式的特定表示(我的猜测是两个补码),您可以typecast通过在计算中直接计算符号位和补码来避免使用.
如果a是N×32矩阵,您可以简单地用sum(...)链接解决方案中的矢量化计算替换:
b = typecast(uint32(a*(2.^(0:size(a, 2)-1)).'), 'int32');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
168 次 |
| 最近记录: |