Main Content

ncread

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

    说明

    示例

    vardata = ncread(source,varname) 读取 source 所含 netCDF 变量 varname 中的所有数据。返回的变量值 varname 属于与 netCDF 数据类型 vardata 最匹配的 MATLAB® 数据类型。

    示例

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

    示例

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

    示例

    全部折叠

    从 netCDF 文件 example.nc 中读取名为 peaks 的变量并对该变量绘图。

    peaksData = ncread("example.nc","peaks");
    whos peaksData
      Name            Size            Bytes  Class    Attributes
    
      peaksData      50x50             5000  int16              
    

    绘制 peaksData 并添加标题。

    surf(peaksData)
    title("Peaks Data")

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

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

    绘制数据图。

    surf(peaksData)
    title("Peaks Data Starting at [25 17]")

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

    start  = [1 1]; 
    count  = [10 15]; 
    stride = [2 3]; 
    sampledPeaksData = ncread("example.nc","peaks",start,count,stride);
    whos sampledPeaksData
      Name                   Size            Bytes  Class    Attributes
    
      sampledPeaksData      10x15              300  int16              
    

    绘制数据图。

    surf(sampledPeaksData)
    title("Peaks Data Subsampled by [2 3]")

    输入参数

    全部折叠

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

    • 本地 netCDF 源的路径

    • 远程 OPeNDAP netCDF 数据源的 OPeNDAP URL

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

      注意

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

    示例: "myNetCDFfile.nc"

    示例: "http://host_name/netcdf_filename#mode=bytes"

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

    如果 source 指定格式为 netcdf4 的文件,您可以通过将 varname 指定为完全限定名称来指定变量在组层次结构中的位置。

    示例: "myVar"

    示例: "/myGrp/mySubGrp/myNestedVar"

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

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

    示例: [2 1 3]

    数据类型: double

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

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

    示例: [Inf 10 50]

    数据类型: double

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

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

    示例: [2 10 1]

    数据类型: double

    输出参量

    全部折叠

    变量数据,以与 varname 的 netCDF 数据类型最匹配的 MATLAB 数据类型的数值数组、文本或元胞数组形式返回。有关 MATLAB 如何确定最佳匹配的详细信息,请参阅NetCDF 到 MATLAB 数据类型的转换

    对于数值变量,当属性 _FillValuescale_factoradd_offset 中有至少一个存在时,vardata 的类型为 double。此外,ncread 在返回 vardata 之前按顺序应用以下属性约定:

    1. 如果 _FillValue 属性存在:

      • 如果 vardata 的类型是 doublesingle,则 ncreadNaN 值替换与 _FillValue 属性的值相等的 vardata 值。

      • 如果 vardata 属于任何其他数值类型,则 ncread0 值替换 NaN vardata 值以及与 _FillValue 属性的值相等的 vardata 值。

    2. 如果 scale_factor 属性存在,则 ncreadvardata 中的值乘以 scale_factor 属性的值。

    3. 如果 add_offset 属性存在,则 ncread 会将 vardata 中的值加上 add_offset 属性的值。

    注意

    如果 varname 的类型是 NC_STRING,则它可以包含 UTF-8 编码的字符;如果 varname 的类型是 NC_CHAR,则它只能包含 ASCII 编码的字符。

    数据类型: 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_INTint32
    NC_SHORTint16
    NC_BYTEint8
    NC_CHARchar
    NC_STRING (*)string
    NC_INT64 (*)int64
    NC_UINT64 (*)uint64
    NC_UINT (*)uint32
    NC_USHORT (*)uint16
    NC_UBYTE (*)uint8
    用户定义的 NC_VLEN 类型 (*)cell

    (*) 这些 netCDF 数据类型仅适用于格式为 netcdf4 的文件。

    提示

    • MATLAB 将多维数据解释为列优先数据,但 netCDF C API 将多维数据解释为行优先数据。netCDF C API 中的多维数据以与 MATLAB 所示顺序相反的顺序显示维度,因此显示为转置。

    版本历史记录

    在 R2011a 中推出

    全部展开