从 MATLAB 中的 64 位字段解压 16 位整数值
Unpack 16-bit integer values from a 64-bit field in MATLAB
我正在从加速度计读取数据,该加速度计提供 3 个轴(x、y 和 z)中每个轴的测量值,作为打包到单个 64 位字段中的 16 位整数。
我在 C 中有以下代码来提取这 3 个轴值:
uint8_t byte0 = *somevalue*, byte1 = *somevalue*, byte2 = *somevalue*, byte3 = *somevalue*, byte4 = *somevalue*, byte5 = *somevalue*;
uint64_t xyzDataReg = ((uint64_t) byte0<<40) + ((uint64_t) byte1<<32) + ((uint64_t) byte2<<24) + ((uint64_t) byte3<<16) + ((uint64_t) byte4<<8) + (uint64_t)byte5;
int16_t xRaw = (int16_t)((xyzDataReg >> 32) & 0xFFFF);
int16_t yRaw = (int16_t)((xyzDataReg >> 16) & 0xFFFF);
int16_t zRaw = (int16_t)(xyzDataReg & 0xFFFF);
但现在我需要将这段代码转换成 MATLAB。如何在 MATLAB 中编写这些位操作操作?
我正在从加速度计读取数据,该加速度计提供 3 个轴(x、y 和 z)中每个轴的测量值,作为打包到单个 64 位字段中的 16 位整数。
我在 C 中有以下代码来提取这 3 个轴值:
uint8_t byte0 = *somevalue*, byte1 = *somevalue*, byte2 = *somevalue*, byte3 = *somevalue*, byte4 = *somevalue*, byte5 = *somevalue*;
uint64_t xyzDataReg = ((uint64_t) byte0<<40) + ((uint64_t) byte1<<32) + ((uint64_t) byte2<<24) + ((uint64_t) byte3<<16) + ((uint64_t) byte4<<8) + (uint64_t)byte5;
int16_t xRaw = (int16_t)((xyzDataReg >> 32) & 0xFFFF);
int16_t yRaw = (int16_t)((xyzDataReg >> 16) & 0xFFFF);
int16_t zRaw = (int16_t)(xyzDataReg & 0xFFFF);
但现在我需要将这段代码转换成 MATLAB。如何在 MATLAB 中编写这些位操作操作?