主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

fitsread

读取 FITS 文件中的数据

说明

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

示例

data = fitsread(filename,"raw") 不会缩放从文件中读取的数据,也不会用 NaN 值替换未定义的数据值。返回的数据保持在文件中指定的类类型。

示例

data = fitsread(filename,extname) 读取 extname 指定的 FITS 文件扩展中的数据。FITS 文件包含主要数据,并且可以选择包含其他组件,称为扩展

示例

data = fitsread(filename,extname,index) 读取 extnameindex 指定的 FITS 文件扩展中的数据。

示例

data = fitsread(filename,___,Name=Value) 使用一个或多个由名称-值参量定义的附加选项从 FITS 文件中读取数据。例如,TableColumns=[3,5] 读取 FITS 文件中的第三列和第五列数据。

示例

示例

全部折叠

从 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");
whos imageData
  Name            Size              Bytes  Class     Attributes

  imageData      31x73x5            90520  double              

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

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

info = fitsinfo("tst0012.fits");

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

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});
 size(primaryData)
ans = 1×2

    16    37

隔行读取 FITS 文件的 ASCII 表。

确定 ASCII 表中的行数。

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

隔行读取 ASCII 表。

tableData = fitsread("tst0012.fits","asciitable",Info=info, ...
                     TableRows=[1:2:rowend])
tableData=1×8 cell array
    {27×1 cell}    {27×1 double}    {27×1 double}    {27×1 double}    {27×1 double}    {27×1 cell}    {27×1 cell}    {27×1 double}

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

确定二进制表中的行数。

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

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

tableData = fitsread("tst0012.fits","binarytable",Info=info, ...
                     TableColumns=[1 2 5])
tableData=1×3 cell array
    {11×1 cell}    {11×13 double}    {11×3 double}

输入参数

全部折叠

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

  • 如果文件位于当前文件夹中或 MATLAB® 路径上的文件夹中,则在 filename 中指定文件名。

  • 如果该文件既不在当前文件夹中,也不在 MATLAB 路径下的文件夹中,则在 filename 中指定完整或相对路径。

示例: "myFile.fits"

示例: "C:\myFolder\myFile.fits"

示例: "myFolder\myFile.fits"

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

extname

描述

"primary"

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

"asciitable"

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

"binarytable"

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

"image"

读取图像延拓中的数据。

"unknown"

读取 Unknown 扩展中的数据。

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

名称-值参数

全部折叠

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

示例: 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 之前推出