如何将一个24位,二进制补码值到一个带符号整数吗?

100(30天)
我想读一个模数转换器使用覆盆子πSPI接口由Matlab控制。模数转换器输出24位二进制补码的数据格式,并放在第一位。Matlab writeRead 命令返回的数据作为一个行向量数据类型 字符
我怎么能快速将数据转化为一个整数数据类型 int32 吗?
8的评论

登录置评。

接受的答案

詹姆斯Tursa
詹姆斯Tursa 2014年6月10日
编辑:詹姆斯Tursa 2014年6月10日
s = 2的补24位字符串转换
b = [s ([1 1 1 1 1 1 1 1]) s];%符号扩展
k =定型(uint32 (bin2dec (b)),“int32”);%等价的十进制数
5个评论
Guillaume
Guillaume 2014年10月17日
这显然是一个24位二进制字符串。因此,扩展8位到32位。

登录置评。

答案(1)

Murat米色
Murat米色 2014年6月10日
有一个例子MATLAB类覆盆子π支持包MCP300x ADC的类似。万博1manbetx这是readVoltage()方法为这类:
函数电压= readVoltage (obj adcChannel)
validateattributes (adcChannel, {“数字”},
{“标量”,“> =”0,“< =”obj.NumAdcChannels-1},,“adcChannel”);
adc = obj.getAdcChannelSelect (adcChannel);
data = uint16 (obj.spiObj。writeRead ([1、adc、0]));
highbits = bitand(数据(2)obj.Lsb2);
电压=双(bitor (bitshift (highbits 8),数据(3)));
电压= (obj.VoltageReference / 1024) *电压;
结束
obj。Lsb2被定义为bin2dec (“00000011”)。读取ADC值是10位藏进两个8位值。上两位字节2和8字节3中最低有效位。
你可以看一看整个类定义:
<万博1manbetx支持包段dir > \ raspi \ + raspi \ +内部\ mcp300x.m

s manbetx 845

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!