Main Content

matlab.io.fits.insertATbl

Insert ASCII table after current HDU

Syntax

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

Description

insertATbl(fptr,rowlen,nrows,ttype,tbcol,tform,tunit,extname) inserts a new ASCII table extension immediately following the current HDU. Any following extensions are shifted down to make room for the new extension. If there are no other following extensions, then the new table extension is simply appended to the end of the file. If the FITS file is currently empty then this routine creates a dummy primary array before appending the table to it. The new extension becomes the current HDU. If rowlen is 0, then CFITSIO calculates the default rowlen based on the tbcol and ttype values.

Specify tform as a cell array of character vectors or a string array that can take the following forms. In each case, 'w' and 'ww' represent the widths of the ASCII columns.

'Iw'int16 column
'Aw'ASCII column
'Fww.dd'Fixed point with 'dd' digits after the decimal point
'Eww.dd'Single precision with 'dd' digits of precision
'Dww.dd'Double precision with 'dd' digits of precision

Binary tables are recommended instead of ASCII tables.

This function corresponds to the fits_insert_atbl(ffitab) function in the CFITSIO library C API.

Examples

Create an ASCII table between two images.

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');