使用nctoolbox获取matlab for循环中的文件列表

时间:2014-06-20 16:00:36

标签: matlab for-loop grib

我有这段代码

sumrain=zeros(881,1121);
run('D:\nctoolbox-nctoolbox-3161fee\setup_nctoolbox.m')
for j=1:m

nc=ncgeodataset(lsf(j,:)); %lsf is a list of file names
dirvar=nc.geovariable('Total_precipitation_surface_1_Hour_Accumulation');
g=dirvar.grid_interop(1,:,:);
dir=dirvar.data(1,:,:);
dir=reshape(dir,[881 1121]);
sumrain=sumrain+dir;
 clear nc dirvar

end

问题是,看起来nctoolbox永远不会起作用(对我而言),除非在读取每个文件之前激活它。如果我把运行安装文件的行放在循环中它工作正常,但代码将非常慢。但是当我将运行设置行保留在循环外部时,我得到一个错误:

"警告:netcdf-java cdm不包含与变量关联的坐标信息。 返回ncvariable而不是ncgeovariable对象。 (依赖于坐标信息的方法 喜欢' grid'或者' geosubset'不可用。 在ncgeodataset> ncgeodataset.geovariable at 459 在ncgeodataset> ncgeodataset.subsref at 622 在s4处理16"

我也把这些行放在我的startup.m中运行设置功能(我看到它每次运行matlab时都被激活),但这也没有用。

1 个答案:

答案 0 :(得分:1)

您收到的警告不是错误,与setup_nctoolbox无关。您只需要运行setup_nctoolbox一次;它调整Matlab的路径和javaclasspath以包含运行nctoolbox所需的依赖项。在循环中多次运行它并没有做任何事情。

该警告只是告诉您正在阅读的数据集缺少坐标变量信息。这是数据集的问题,而不是nctoolbox。