MATLAB:读取无符号16位二进制文​​件的两个字节

MBL*_*MBL 5 matlab byte integer binaryfiles

我有一个二进制Band Sequential(1波段,BSQ文件),它是一个无符号的16位(2字节)整数.

目前我通过multibandread读取整个(图像):

img=multibandread('IMAGE.bsq',[400 400 1],'uint16',0,'bsq','n');
Run Code Online (Sandbox Code Playgroud)

MATLAB中的哪个过程允许我单独读取两个字节?即我想在MATLAB中将文件读入2个新数组,例如byte1(400x400x1)和byte2(400x400x1).

这可以通过fread来实现吗?我注意到在'precision'部分中可以跳过源值(例如'N*source=>output'),但我不确定确切的过程.

Eit*_*n T 4

img一种方法是通过按位运算分割电流。LSB 图像将是:

img1 = bitand(img, 255);   %// 0x00FF
Run Code Online (Sandbox Code Playgroud)

MSB 图像将是:

img2 = bitsra(img, 8);
Run Code Online (Sandbox Code Playgroud)

不是强制性的,但也许您还想将它们转换为uint8s:

img1 = uint8(img1);
img2 = uint8(img2);
Run Code Online (Sandbox Code Playgroud)

  • `img2 = bitsra(img, 8);` 会更好。 (2认同)
  • 看来已经做到了。我只对 MSB 真正感兴趣,它看起来使用 `img1 = bitand(A, 255); 具有合理的值。%// 0x00FF`. 干杯 (2认同)