Использование nctoolbox для списка файлов в цикле matlab for
У меня есть этот кусок кода
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 на 622 В s4, обработка на 16 "
Я также поместил строки для запуска функции установки в моем startup.m (я вижу, что он активируется каждый раз, когда я запускаю matlab), но это тоже не сработало.
1 ответ
Это предупреждение, которое вы получаете, не является ошибкой и не имеет ничего общего с setup_nctoolbox
, Вам нужно только бежать setup_nctoolbox
один раз; он корректирует путь Matlab и javaclasspath, чтобы включить зависимости, необходимые для запуска nctoolbox. Запуск его несколько раз внутри цикла ничего не делает.
Это предупреждение просто говорит о том, что в наборе данных, который вы читаете, отсутствует информация о переменной координаты. Это проблема с набором данных, а не с nctoolbox.