2

クロロフィル データの HDF ファイルがあります。これらの HDF4 ファイルを処理して、期間中の NDVI を生成しようとしています。しかし、実行しようとすると

Band = hdfread('F:\MATLAB\HDF data\binned hdf\OCMHDFFiles_20-Sep-2012\O2_01APR2011_004_000_GAN_L3B_CL_M.hdf','clo','Fields','');
% Construct an RGB matrix from the three bands into one 3D matrix.
SPCrater_321 = cat(Band);
% Display the image
figure(1)
imshow(SPCrater_321)
xlabel('Longitude (pixels)')
ylabel('Latitude (pixels)')
title('ASTER Bands 3, 2, 1')
??? Error using ==> permute
Out of memory. Type HELP MEMORY for your options.
Error in ==> hdfsdsread at 57
data = permute(data,ndims(data):-1:1);
Error in ==> hdfread at 240
varargout{1} = hdfsdsread(hinfo,start,stride,edge);

次の実行は、

Band_3 = hdfread('F:\MATLAB\HDF data\binned hdf\OCMHDFFiles_20-Sep-2012\O2_01APR2011_004_000_GAN_L3B_CL_M.hdf','clo','Fields','ImageData3N');
Band_2 = hdfread('F:\MATLAB\HDF data\binned hdf\OCMHDFFiles_20-Sep-2012\O2_01APR2011_004_000_GAN_L3B_CL_M.hdf','clo','Fields','ImageData2');
Band_1 = hdfread('F:\MATLAB\HDF data\binned hdf\OCMHDFFiles_20-Sep-2012\O2_01APR2011_004_000_GAN_L3B_CL_M.hdf','clo','Fields','ImageData1');
% Calculate NDVI.
Band_2 = im2single(Band_2);
Band_3 = im2single(Band_3);
SPCrater_NDVI = (Band_3 - Band_2) ./ (Band_3 + Band_2);
% Display the image.
j=imresize(SPCrater_NDVI,0.5);
figure(5)
imshow(j,'DisplayRange',[0 1])
??? Out of memory. Type HELP MEMORY for your options.

この実行時点で「memory」コマンドを入力すると、次のようになります。

memory
Maximum possible array:             255 MB (2.669e+008 bytes) *
Memory available for all arrays:    569 MB (5.971e+008 bytes) **
Memory used by MATLAB:             1197 MB (1.255e+009 bytes)
Physical Memory (RAM):             8181 MB (8.578e+009 bytes)
*  Limited by contiguous virtual address space available.
** Limited by virtual address space available.

誰でもこの問題を解決するのを手伝ってくれませんか。メモリ配列の長さを増やす方法。

あなたが提供できる助けに本当に感謝します。この情報をお送りいただければ幸いです。

M.プラブ

(まぷらぶ)

4

1 に答える 1

2

このテクニカルノートを参照してください: http://www.mathworks.nl/help/matlab/matlab_prog/resolving-out-of-memory-errors.html?s_tid=doc_12b#brh72ex-52

最も簡単な解決策は、64 ビットに移行することです。

于 2012-12-14T09:01:48.770 に答える