Main Content

matlab.io.fits.insertATbl

在当前 HDU 后面插入 ASCII 表

语法

insertATbl(fptr,rowlen,nrows,ttype,tbcol,tform,tunit,extname)

说明

insertATbl(fptr,rowlen,nrows,ttype,tbcol,tform,tunit,extname) 紧跟当前 HDU 之后插入新的 ASCII 表扩展。所有后续扩展都将相应下移,以便为新扩展腾出空间。如果没有任何其他后续扩展,就会向文件末尾处追加新的表扩展。如果 FITS 文件当前为空,那么,此例程在向其追加表之前,会先创建一个虚拟主数组。新扩展变为当前 HDU。如果 rowlen 为 0,CFITSIO 会根据 tbcolttype 值计算默认 rowlen

tform 指定为可采用以下形式的字符向量元胞数组或字符串数组。在下面各种情形中,'w''ww' 表示 ASCII 列的宽度。

'Iw'int16
'Aw'ASCII 列
'Fww.dd'小数点后带 'dd' 位数的定点
'Eww.dd'具有 'dd' 位精度的单精度
'Dww.dd'具有 'dd' 位精度的双精度

建议使用二进制表,而不是 ASCII 表。

此函数对应于 CFITSIO 库 C API 中的 fits_insert_atbl(ffitab) 函数。

示例

在两个图像之间创建 ASCII 表。

import matlab.io.*
fptr = fits.createFile('myfile.fits');
fits.createImg(fptr,'uint8',[20 30]);
fits.createImg(fptr,'int16',[30 40]);
fits.movRelHDU(fptr,-1);
ttype = {'Name','Short','Fix','Double'};
tbcol = [1 17 28 43];
tform = {'A15','I10','F14.2','D12.4'};
tunit = {'','m**2','cm','km/s'};
fits.insertATbl(fptr,0,0,ttype,tbcol,tform,tunit,'my-table');
fits.writeCol(fptr,1,1,char('abracadabra','hocus-pocus'));
fits.writeCol(fptr,2,1,int16([0; 1]));
fits.writeCol(fptr,3,1,[12.4; 4/3]);
fits.writeCol(fptr,4,1,[12.4; 4e8/3]);
fits.closeFile(fptr);
fitsdisp('myfile.fits','mode','min');

另请参阅

|