我有这段代码
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时都被激活),但这也没有用。
答案 0 :(得分:1)
您收到的警告不是错误,与setup_nctoolbox
无关。您只需要运行setup_nctoolbox
一次;它调整Matlab的路径和javaclasspath以包含运行nctoolbox所需的依赖项。在循环中多次运行它并没有做任何事情。
该警告只是告诉您正在阅读的数据集缺少坐标变量信息。这是数据集的问题,而不是nctoolbox。