0

用于 HDF 数据的 Matlab 批处理给出了错误。如果我使用单一操作,它会完美运行。但不能批量操作。我的代码在这里

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]});
4

1 回答 1

0

dir在特定目录中使用,/upload/server/php/files/以查找您的文件。您稍后还写出到同一目录(使用imwrite)。

但是,您在使用时没有指定目录hdfread,因此它可能无法找到该文件。您之前可能在运行代码时位于正确的目录中,所以没有注意到。为了快速修复,您可以像使用imwrite.

L_865 = hdfread([`/upload/server/php/files/`,files(k).name,], ...);
于 2014-11-12T11:02:16.317 回答