Main Content

fitsread

读取 FITS 文件中的数据

说明

示例

data = fitsread(filename) 读取由 filename 指定的普适图像传输系统 (FITS) 文件的主要数据,并将其作为调整后的数组返回。该函数将未定义的数据值替换为 NaN,根据斜率和截距值来缩放数值数据,并始终返回双精度值。

示例

data = fitsread(filename,'raw') 读取 FITS 文件的主要数据,不作出调整。此语法不缩放从文件中读取的数据,将未定义的值替换为 NaN。返回的数据保持在文件中指定的类类型。

示例

data = fitsread(filename,extname) 读取 extname 指定的 FITS 文件扩展中的数据。FITS 文件包含主要数据,并且可以有选择性地包含任意数目的可选组件(FITS 术语中称为扩展)。

示例

data = fitsread(filename,extname,index) 还指定存在多个相同扩展类型时的索引。

示例

data = fitsread(filename,___,Name,Value) 使用一个或多个由名称-值参量定义的附加选项从 FITS 文件中读取数据。例如,TableColumns 指定要读取哪些列。

示例

全部折叠

从 FITS 文件中读取主要数据。

data = fitsread('tst0012.fits');

检查输出变量 data

whos data
  Name        Size             Bytes  Class     Attributes

  data      109x102            88944  double              

从 FITS 文件中读取主要数据作为原始数据。

data = fitsread('tst0012.fits', 'raw');

检查输出变量 data

whos data
  Name        Size             Bytes  Class     Attributes

  data      109x102            44472  single              

浏览 FITS 文件的图像延拓,并从图像延拓中读取数据。

列出 FITS 文件的内容,包括任何延拓(如果存在)。

info = fitsinfo('tst0012.fits');
disp(info.Contents);
    {'Primary'}    {'Binary Table'}    {'Unknown'}    {'Image'}    {'ASCII Table'}

从 FITS 文件的图像延拓中读取数据。

imageData = fitsread('tst0012.fits','image');

从 FITS 文件中读取数据的子样本。

首先,获取关于 FITS 文件的信息。

info = fitsinfo('tst0012.fits')
info = struct with fields:
       Filename: '/mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2528353/build/matlab/toolbox/matlab/demos/tst0012.fits'
    FileModDate: '12-Mar-2001 18:37:46'
       FileSize: 109440
       Contents: {'Primary'  'Binary Table'  'Unknown'  'Image'  'ASCII Table'}
    PrimaryData: [1x1 struct]
    BinaryTable: [1x1 struct]
        Unknown: [1x1 struct]
          Image: [1x1 struct]
     AsciiTable: [1x1 struct]

查询图像延拓的每个维度的大小。

info.Image.Size
ans = 1×3

    31    73     5

存储行和列的大小。

rowend = info.Image.Size(1);
colend = info.Image.Size(2);

隔行隔列读取 FITS 文件的第三个维度的第五个元素。

 primaryData = fitsread('tst0012.fits','image', ...
              'Info', info,...
              'PixelRegion',{[1 2 rowend], [1 2 colend], 5 });

隔行读取 FITS 文件的 ASCII 表。

确定 ASCII 表中的行数。

info = fitsinfo('tst0012.fits');
rowend = info.AsciiTable.Rows;

隔行读取 ASCII 表。

tableData = fitsread('tst0012.fits','asciitable',...
                    'Info',info,...
                    'TableRows',[1:2:rowend]);

读取 FITS 文件的二进制表中的第一列、第二列和第五列的所有数据。

确定二进制表中的行数。

info      = fitsinfo('tst0012.fits');
rowend    = info.BinaryTable.Rows;

读取二进制表的第一列、第二列和第五列。

tableData = fitsread('tst0012.fits','binarytable', ...
                    'Info',info,...
                    'TableColumns',[1 2 5]);

输入参数

全部折叠

文件名,指定为字符向量或字符串标量。

数据数组或扩展名称,指定为字符向量或字符串标量。FITS 文件包含主要数据,并且可以有选择性地包含任意数目的可选组件(FITS 术语中称为扩展)。要确定 FITS 文件的内容,请查看由 fitsinfo 返回的结构体的 Contents 字段。

Extname

描述

'primary'

读取主要数据数组中的数据。

'asciitable'

以一维元胞数组形式从 ASCII 表扩展中读取数据。

'binarytable'

以一维元胞数组形式从二进制表扩展中读取数据。

'image'

读取图像延拓中的数据。

'unknown'

读取 Unknown 扩展中的数据。

索引,指定为标量,指示在同一类型存在多个扩展时要读取哪个扩展。

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: data = fitsread('tst0012.fits','PixelRegion',{[1 2 100],[1 2 100]})

信息,指定为结构体数组,用于指定要读取的数据的位置。信息结构体数组可以通过 fitsinfo 获得。指定 Info 可以显著提高性能,尤其是从文件中读取多个图像时。

像素区域,指定为向量元胞数组。每个向量对应于数据的一个维度。要指定从第 N 个维度读取的子区域,请使用元胞数组中的第 N 个向量。元胞数组中的每个向量必须格式化为以下格式之一。

向量格式

描述

start

维度内的起点。默认停止点是维度的终点。

[start stop]

维度内的起点和停止点。

[start increment stop]

维度的起点和停止点以及读取的增量。

像素区域参数仅对主要延拓或图像延拓有效。

要读取的列,指定为一维数组,其中包含要从 ASCII 或二进制表扩展中读取的列的索引。该向量必须包含以递增顺序指定的表数据的唯一有效索引。此参数仅对 ASCII 扩展或二进制扩展有效。

要读取的行,指定为一维数组,其中包含要从 ASCII 或二进制表扩展中读取的行的索引。该向量必须包含以递增顺序指定的表数据的唯一有效索引。此参数仅对 ASCII 扩展或二进制扩展有效。

提示

  • MATLAB® 按照 FITS 图像数据在文件中出现的顺序读取该图像数据,但一些用于读取和写入 FITS 图像数据的软件包假定图像数据按照图像的底行在前的顺序存储。因此与使用其他软件包显示的相同数据相比,MATLAB 中显示的 FITS 图像数据可能会出现上下方向的翻转(即绕水平轴翻转)。要在 MATLAB 中翻转图像,您可以在显示图像之前对 fitsread 的输出使用 flipud 函数。

版本历史记录

在 R2006a 之前推出