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 会根据 tbcol
和 ttype
值计算默认 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');