Main Content

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

ncread

读取 NetCDF 数据源中的变量数据

说明

示例

vardata = ncread(source,varname) 读取 source 所含变量 varname 中的所有数据。

示例

vardata = ncread(source,varname,start,count)start 中指定的位置开始读取数据。count 参数指定沿每个维度读取的元素数。

示例

vardata = ncread(source,varname,start,count,stride)stride 所指定变量每个维度的索引间隔返回数据。

示例

全部折叠

从文件 example.nc 中读取并绘制名为 peaks 的变量。

peaksData  = ncread('example.nc','peaks');
whos peaksData
  Name            Size            Bytes  Class    Attributes

  peaksData      50x50             5000  int16              

绘制 peaksData 并添加标题。

surf(double(peaksData));
title('Peaks Data');

Figure contains an axes object. The axes object with title Peaks Data contains an object of type surface.

仅读取并绘制变量数据的一部分,即从位置 [25 17] 开始直到每个维度的末尾。

startLoc = [25 17]; % Start location along each coordinate
count  = [Inf Inf]; % Read until the end of each dimension
peaksData  = ncread('example.nc','peaks',startLoc,count);
whos peaksData
  Name            Size            Bytes  Class    Attributes

  peaksData      26x34             1768  int16              

绘制数据图。

surf(double(peaksData));
title('Peaks Data Starting at [25 17]');

Figure contains an axes object. The axes object with title Peaks Data Starting at [25 17] contains an object of type surface.

读取并绘制数据,读数据时在每个维度上均按指定的变量索引间距进行采样。从 startLoc 中的位置开始读取并以 stride 中指定的间隔读取变量数据。stride 中的值为 1 表示在对应维度连续访问相邻值;值为 2 表示在对应维度中每隔一个值访问一个值,依此类推。

startLoc = [1 1]; 
count  = [10 15]; 
stride = [2 3]; 
sampledPeaksData  = ncread('example.nc','peaks',startLoc,count,stride);
whos sampledPeaksData
  Name                   Size            Bytes  Class    Attributes

  sampledPeaksData      10x15              300  int16              

绘制数据图。

surf(double(sampledPeaksData));
title('Peaks Data Subsampled by [2 3]');

Figure contains an axes object. The axes object with title Peaks Data Subsampled by [2 3] contains an object of type surface.

输入参数

全部折叠

NetCDF 数据源的名称,指定为字符串标量或字符向量。source 参数可以是以下值之一:

  • 本地 NetCDF 源的路径

  • 远程 OPeNDAP NetCDF 数据源的 OPeNDAP URL

  • 远程 NetCDF 源的 HTTP URL,在 URL 的末尾附加 #mode=bytes 以支持字节范围读取

    注意

    字节范围读取比从其他来源读取要慢。有关字节范围读取的更多详细信息,请参阅 NetCDF 文档。

示例: "myNetCDFfile.nc"

变量名称,指定为包含 NetCDF 数据源中变量名称的字符串标量或字符向量。

数据类型: string | char

起始位置,指定为由正整数组成的数值向量。对于 N 维变量,start 是长度为 N 的向量,其中包含从 1 开始的索引。

如果未指定 start,则 ncread 函数将从每个维度的第一个索引开始读取变量。

数据类型: double

要读取的元素数,指定为由正整数组成的数值向量。对于 N 维变量,count 是长度为 N 的向量,用于指定要沿每个维度读取的元素数。如果 count 的任一元素是 Inf,则 ncread 将一直读取,直到对应维度的末尾。

如果未指定 count,则 ncread 函数将读取变量数据,直到每个维度的末尾。

数据类型: double

沿每个维度读取变量数据时的变量索引间距,指定为由整数组成的数值向量。对于 N 维变量,stride 是长度为 N 的向量。stride 向量的元素按顺序对应于变量的维度。值为 1 表示访问对应维度中 NetCDF 变量的相邻值。而值为 2 则表示隔值访问对应维度中 NetCDF 变量的值,依此类推。

如果未指定 stride,则 ncread 函数将沿每个维度以默认间距 1 读取数据。

数据类型: double

输出参数

全部折叠

变量数据,以与 varname 的 NetCDF 数据类型最匹配的数据类型形式返回。有关 MATLAB® 如何确定最佳匹配的详细信息,请参阅详细信息

对于数值数据类型,当存在 _FillValuescale_factoradd_offset 中的至少一个变量属性时,ncread 将返回 double 类型的 vardata。此外,ncread 适用以下约定:

  • 如果 _FillValue 属性存在,则 ncread 将等于 _FillValuevardata 值替换为 NaN。如果 _FillValue 属性不存在,则 ncread 将在 NetCDF 库中查询该变量的填充值。

  • 如果 scale_factor 属性存在,则 ncread 会将变量数据乘以 scale_factor 属性的值。

  • 如果 add_offset 属性存在,则 ncread 会将变量数据加上 add_offset 属性的值。

注意

对于 NC_CHAR 类型的变量,ncread 函数支持读取只包含 ASCII 编码字符的 vardata。支持从 NetCDF-4 文件中 NC_STRING 类型的变量读取 UTF-8 编码的字符。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | cell | char | string

详细信息

全部折叠

NetCDF 到 MATLAB 数据类型的转换

NetCDF 相关的 MATLAB 函数根据此表自动选择与 NetCDF 数据类型最匹配的 MATLAB 数据类型。

NetCDF 数据类型MATLAB 数据类型
NC_DOUBLEdouble
NC_FLOATsingle
NC_INT64(仅限 NetCDF-4 文件)int64
NC_UINT64(仅限 NetCDF-4 文件)uint64
NC_INTint32
NC_UINT(仅限 NetCDF-4 文件)uint32
NC_SHORTint16
NC_USHORT(仅限 NetCDF-4 文件)uint16
NC_BYTEint8
NC_UBYTE(仅限 NetCDF-4 文件)uint8
NC_CHARchar
NC_STRING(仅限 NetCDF-4 文件)string
用户定义的 NC_VLEN 类型(仅限 NetCDF-4 文件)cell

版本历史记录

在 R2011a 中推出

全部展开