Matlab Batch Processing для данных HDF - не удалось открыть файл Ошибка
Пакетная обработка Matlab для данных HDF дает ошибку. Если я использую одну операцию, она отлично работает. Но не работает в пакетном режиме. Мой код здесь
files = dir('/upload/server/php/files/*.hdf');
for k = 1:numel(files)
L_865 = hdfread(files(k).name, '/Geophysical Data/L_865', 'Index', {[1 1],[1 1],[6120 1243]});
L_620 = hdfread(files(k).name, '/Geophysical Data/L_620', 'Index', {[1 1],[1 1],[6120 1243]});
NDVI = (L_865- L_620) ./ (L_865 + L_620);
NDVI=NDVI-min(NDVI(:));
NDVI=NDVI./max(NDVI(:));
[J,~]=gray2ind(NDVI);
imwrite(J,jet,['/server/php/files/images/'files(k).name],'jpg');
end
Ошибка
Error using hdfread>dataSetInfo (line 348)
Could not open file 'OxxxST_S.hdf'.
Error in hdfread (line 209)
[hinfo,params] = dataSetInfo(varargin{:});
Error in batchndvi (line 7)
L_865 = hdfread(files(k).name, '/Geophysical Data/L_865', 'Index', {[1 1],[1 1],[6120
1243]});
1 ответ
Ты используешь dir
в определенном каталоге, /upload/server/php/files/
найти ваши файлы. Вы также позже выписать в тот же каталог (с imwrite
).
Однако вы не указываете каталог при использовании hdfread
так что, вероятно, не может найти файл. Возможно, вы ранее находились в правильном каталоге при запуске кода, поэтому не заметили. Для быстрого исправления, вы можете просто объединить строки, как вы делаете с imwrite
,
L_865 = hdfread([`/upload/server/php/files/`,files(k).name,], ...);