Main Content

matlab.io.fits.createTbl

创建新的 ASCII 或二进制表扩展

语法

fptr = createTbl(fptr,tbltype,nrows,ttype,tform,tunit,extname)

说明

fptr = createTbl(fptr,tbltype,nrows,ttype,tform,tunit,extname) 创建新的 ASCII 或二进制表扩展。tbltype 必须为 'binary' 或者 'ascii'nrows 参量提供要在表中创建的初始行数,正常情况下应为零。tunit 指定每一列的单位,但是如果不需要单位,它可以是空元胞数组。extname 指定扩展名称,但可以忽略。

tform 包含列的格式,指定为字符向量元胞数组或字符串数组。对于二进制表,值应采用 'rt' 的形式,其中 'r' 是重复计数,'t' 是以下字母之一。

'A'ASCII 字符
'B'字节或 uint8
'C'复数(单精度)
'D'双精度
'E'单精度
'I'int16
'J'int32
'K'int64
'L'逻辑值
'M'复数(双精度)
'X'位 (int8 个零和一)

如果 tform 值包括 '1Pt''1Qt' 形式,其中 't' 按上面所述指定数据类型,则也可以将列指定为具有变量宽度。

对于 ASCII 表,tform 包含采用以下形式的值:

'Iw'宽度为 'w'int16
'Aw'宽度为 'w' 的 ASCII 列
'Fww.dd'定点
'Eww.dd' 宽度为 'ww'、精度为 'dd' 的单精度值
'Dww.dd'宽度为 'ww'、精度为 'dd' 的双精度值

此函数对应于 CFITSIO 库 C API 中的 fits_create_tbl(ffcrtb) 函数。

示例

创建一个二进制表。第一列包含字符串,每个字符串九个字符。第二列包含四元素位序列。第三列包含三元素 uint8 值序列。第四列包含双精度标量。

import matlab.io.*
fptr = fits.createFile('myfile.fits');
ttype = {'Col1','Col2','Col3','Col4'};
tform = {'9A','4X','3B','1D'};
tunit = {'m/s','kg','kg/m^3','candela'};
fits.createTbl(fptr,'binary',10,ttype,tform,tunit,'my-table');
fits.closeFile(fptr);
fitsdisp('myfile.fits');

创建一个包含两列的表,其中,第一列包含单个双精度值,但第二列包含可变长度的双精度值。

import matlab.io.*
fptr = fits.createFile('myfile2.fits');
ttype = {'Col1','Col2'};
tform = {'1D','1PD'};
fits.createTbl(fptr,'binary',0,ttype,tform);
fits.closeFile(fptr);
fitsdisp('myfile2.fits');