测试netcdf文件是否有效而不崩溃

时间:2015-12-31 07:33:49

标签: matlab netcdf

我正在使用matlab中的ncread函数读取多个netcdf文件。 由于我不知道的原因,某些文件(由以下FILEPATH描述)未正确读取且ncread崩溃,从而产生错误消息:

Error using internal.matlab.imagesci.nc/openToRead (line 1259) Could not open FILEPATH for reading.

Error in internal.matlab.imagesci.nc (line 121) this.openToRead();

Error in ncread (line 53) ncObj = internal.matlab.imagesci.nc(ncFile);

Error in MY_FUNCTION (line 102) Lon = nanmean(ncread(FILEPATH,'Lon'));

如果您知道测试netcdf文件而不会崩溃的方法,或者您了解产生此错误的原因,那么我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

标准方法是在try / catch语句中包含可能失败的语句,以在中断函数执行之前拦截抛出的异常,如下所示:

function [out1, out2, ...] = MY_FUNCTION(arg1, arg2, ...)

        %//Initial code

        try
                Lon_data = ncread(FILEPATH,'Lon');
        catch ME
                warning('MY_FUNCTION:ncread', 'Could not load because <<%s>>',ME.message);
                %//Do something to recover from error
                %//Return from function if recover not possible
        end;
        Lon = nanmean(Lon_data);

        %//Rest of the code

end

请注意,上面函数签名中的...不是有效的MATLAB语法,而是说“这里有一些输入和输出,我不知道它们是如何声明的”;请用适当的进/出声明代替。