【问题标题】:Matlab-reading large netcdf filesMatlab——读取大型netcdf文件
【发布时间】:2016-08-18 16:24:09
【问题描述】:

我有一个 17G 的 netcdf 文件,我正尝试将其用于分析。 netcdf 文件中的每个变量都设置为:variable(x,y,z,time)。我想一次“一次”读入并分析变量,以便在 Matlab 中进行分析。换句话说,我想一次使用所有的 x、y 和 z 点。过去我有较小的文件,所以读取变量的设置如下:

fid=netcdf.open('filename/location','NC_NOWRITE');
var_id=netcdf.inqVarID(fid,'varname');
var=netcdf.getVar(fid,var_id);

是否可以在读入变量时使用一个时间步来读入变量? (语法不正确)它基本上看起来像

var=netcdf.getVar(fid,var_id,[:,:,:,time_index]);

【问题讨论】:

    标签: matlab netcdf


    【解决方案1】:

    是的,matlab netcdf 命令支持这一点,几乎就像你写的那样:

    data = netcdf.getVar(fid,var_id,var_index,var_length)
    

    请参阅matlab documentation 了解更多信息。您也可以使用 high-level matlab commands 代替 netCDF 库函数。 例如,如果varname 是一个 100x4 数组,您可以使用以下命令获取第 7 行:

    % read 4 columns from 1 row of data starting at row 7, column 1
    v = ncread('filename/location','varname',[7 1],[1 4]);
    

    或者是一个四维数组,如题:

    % read all data from dim. 1-3 at dim 4 = 27
    v = ncread('filename/location','varname',[1 1 1 27],[Inf Inf Inf 1]);
    

    【讨论】:

    • 既然我有一个四维数组,我不需要启动像 data=netcdf.getVar(fid,var_id,[1 1 1 time_index] 这样的命令...我有很难找出计数和步幅应该是多少,以便从那时获取所有 x、y、z 数据。
    • 我在答案中添加了一些示例代码。此外,matlab“高级”命令的文档比您正在使用的“包”命令的文档更好地解释了这个问题。请参阅答案中的新链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    相关资源
    最近更新 更多