
loop para netcdf
Publicado por Maite (1 intervención) el 03/08/2016 15:43:46
hola! tengo centenas de ficheros netcdf y quiero crear un bucle que los lea, extraiga el dato que quiero trabajar de forma matricial y no me sale. Después tengo que hacer un recorte para trabajar solo en la zona de interes. Hasta ahora tengo hecho este codigo:
Pero lo de dentro del bucle no funciona, he conseguido hacer el proceso para un solo fichero y funciona:
gracias!!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
% Specify the folder where the files are.
myFolder = 'G:\SWICCA\DATA_validation\ESA\data\daily_files\COMBINED\v02.2\2010\files';
% Check to make sure that folder actually exists. Warn user if it doesn't.
if ~isdir(myFolder)
errorMessage = sprintf('Error: The following folder does not exist:\n%s', myFolder);
uiwait(warndlg(errorMessage));
return;
end
% Read the names of nc-files in the folder
ncfiles = dir('*.nc') ;
Nfiles = length(ncfiles) ;
% Loop for each nc-file
for i = 1:Nfiles
ncid=netcdf.open('ncfiles', 'NC_NOWRITE');
varname= netcdf.inqVar(ncid(i),4);
varid = netcdf.inqVarID(ncid(i),varname(i));
data(i) = netcdf.getVar(ncid(i),varid(i));
netcdf.close(ncid(i));
end
lon1=netcdf.getVar(ncid,0,0,1440);
lat1=netcdf.getVar(ncid,1,0,720);
%crop to interest area
[longrid,latgrid]=meshgrid(lon1,lat1);
data2=data((longrid>-1)&(longrid<0)&(latgrid>39)&(latgrid<40));
Pero lo de dentro del bucle no funciona, he conseguido hacer el proceso para un solo fichero y funciona:
1
2
3
4
5
6
7
8
9
10
ncid1=netcdf.open('ESACCI-SOILMOISTURE-L3S-SSMV-COMBINED-20100101000000-fv02.2.nc', 'NC_NOWRITE');
varname = netcdf.inqVar(ncid1,4);
varid = netcdf.inqVarID(ncid1,varname);
data = netcdf.getVar(ncid1,varid);
lon1=netcdf.getVar(ncid1,0,0,1440);
lat1=netcdf.getVar(ncid1,1,0,720);
%crop to interest area
[longrid,latgrid]=meshgrid(lon1,lat1);
data2=data((longrid>-1)&(longrid<0)&(latgrid>39)&(latgrid<40));
gracias!!
Valora esta pregunta


0