how could i stack multiple satellite data of soil moisture in to one and find out the nanmean of all files? The size of files is 1440*720. The file is in '.nc' format.
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
% read the all nc file
file = dir('*.nc');
for i = 1:length(file);
sm(i) = sm(:,:,i);
sm.mean = nanmean(:,:,i)
2 comentarios
DGM
el 24 de Mayo de 2023
Do you want the average image?
Or do you want the average value of each image?
Respuestas (1)
dpb
el 24 de Mayo de 2023
Editada: dpb
el 24 de Mayo de 2023
% read the all nc file
d= dir('*.nc'); % dir() returns a struct, not a file or even a file name...
varname='THEVARIABLEYOUWANT'; % set this appropriately
sm=[]; % placeholder to catenate images
for i = 1:numel(d)
ncid = netcdf.open(fullfile(d(i).folder,d(i).name),'NC_NOWRITE');
varid = netcdf.inqVarID(ncid,varname); % find the id number in the file to match
sm=cat(3,sm,netcdf.getVar(ncid,varid)); % read each, add to 3D array
end
sm.mean=mean(sm,3,'omitnan'); % compute mean over images
You may need to add size of array to read; I don't have enough familiarity with netCDF format to know whether the getVar method can return an array by var id or not; would presume it can, but don't know.
You may also be able to use the variable name in the varid location instead of inquiring for its postion; that's not documented in the (pretty poor in comparison to standard MATLAB doc) doc file; the input/output variables sections are notable in their being absent so no descriptions given.
It would be more efficient to preallocate the 3D array and store each into the next plane (or use a cell array of 2D arrays), but unless the number is quite large, the above shouldn't be too bad...
0 comentarios
Ver también
Categorías
Más información sobre Characters and Strings en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!