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,], ...);
Другие вопросы по тегам