multibandread
从二进制文件读取条带交错文件
语法
X = multibandread(filename,size,precision,offset,interleave,byteorder)
X = multibandread(...,subset1,subset2,subset3)
说明
X = multibandread(filename,size,precision,offset,interleave,byteorder)
从二进制文件 filename
读取条带顺序 (BSQ)、条带按行交错 (BIL) 或条带按像素交错 (BIP) 数据。filename
输入指定为字符向量或字符串标量。该函数将条带>定义为三维数组的第三个维度,如下图所示。
您可以使用 multibandread
的参数来指定读取操作的各个方面,例如读取哪些条带。有关详细信息,请参阅参数。
X
是二维数组(如果只读取一个条带);否则是三维数组。默认情况下,X
返回为 double
数据类型的数组。使用 precision
参数可将数据映射到不同数据类型。
X = multibandread(...,subset1,subset2,subset3)
读取文件中数据的子集。您最多可以使用三个子集设置参数指定沿行、列和条带维度的数据子集。有关详细信息,请参阅子集设置参数。
注意
除了 BSQ、BIL 和 BIP 文件,还可以使用 TIFF 文件格式存储多条带图像。在这种情况下,可使用 imread
函数导入数据。
参数
该表格介绍了 multibandread
所接受的参数。
参数 | 描述 |
---|---|
| 字符向量或字符串标量,包含要读取的文件的名称。 |
| 三元素整数向量包含
如果全部读取,那么它们就是数据的维度。 |
| 指定要读取的数据格式的字符向量或字符串标量,例如 注意:还可以使用 |
| 指定文件中第一个数据元素位置的标量(从 0 开始计算)。该值表示文件起始处到数据起始处的字节数。 |
| 存储数据的格式,指定为下列值之一:
有关这些交错方法的详细信息,请参阅 |
| 指定数据存储字节顺序(机器格式)的字符向量或字符串标量,例如:
关于支持格式的完整列表,请参阅 |
子集设置参数
最多可以指定三个子集设置参数。每个取子集参数都是一个三元素元胞数组 {
,其中dim
,method
,index}
参数 | 描述 |
---|---|
| 取子集时所沿的维度。指定为下列任意值之一:
|
| 子集设置方法。指定为下列值之一:
如果忽略此子集元胞数组元素, |
| 如果 如果 |
示例
示例 1
为数据集设置初始参数。
rows=3; cols=3; bands=5; filename = tempname;
定义数据集。
fid = fopen(filename, 'w', 'ieee-le'); fwrite(fid, 1:rows*cols*bands, 'double'); fclose(fid);
使用条带顺序格式每隔一个条带读取一次数据。
im1 = multibandread(filename, [rows cols bands], ... 'double', 0, 'bsq', 'ieee-le', ... {'Band', 'Range', [1 2 bands]} )
使用条带按像素交错格式读取数据前两行和前两列。
im2 = multibandread(filename, [rows cols bands], ... 'double', 0, 'bip', 'ieee-le', ... {'Row', 'Range', [1 2]}, ... {'Column', 'Range', [1 2]} )
使用条带按行交错格式读取数据。
im3 = multibandread(filename, [rows cols bands], ... 'double', 0, 'bil', 'ieee-le')
删除本例中创建的文件。
delete(filename);
示例 2
从 FITS 文件 tst0012.fits
第 74880 个字节开始读取 int16
BIL 数据。
im4 = multibandread('tst0012.fits', [31 73 5], ... 'int16', 74880, 'bil', 'ieee-be', ... {'Band', 'Range', [1 3]} ); im5 = double(im4)/max(max(max(im4))); imagesc(im5);
版本历史记录
在 R2006a 之前推出
另请参阅
fread
| fwrite
| imread
| memmapfile
| multibandwrite