Read multiple netcdf files with variable names
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I got around 1000 netcdf-files that needs to be run in the same matlab-script and have problems getting them loaded. The files are named in a logical format, like this:
model_variable_period_area
where model=model1,model2,model3..
variable=variable1,variable2,variable3...
period=period1...
area=area1..
So every model, has multiple variables, which again has multiple periods, and so on, for example could a filename be:
model3_variable2_period3_area4
But there will be exceptions, cases where the file doesn't exist, for example if period3 only exist together with model1, so that the filename
model2_variable2_period3_area4
wouldn't exist, and Matlab wouldn't be able to find it.
So now to my question - I have tried several methods, but I don't know how to do this. I'm using ncread to load the files, and I've tried something like this:
model = genvarname({'model1', 'model2', 'model3', 'model4'});
variable = genvarname({'variable1','variable2','variable3',variable4'});
area = genvarname({'area1','area2','area3','area4'});
if model = 'model1';
period = genvarname({'period3'});
else period = genvarname({'period1','period2','period3','period4'});
end
Input_file = ncread(sprintf('%d_%d_%d_%d',model,variable,period,area),'varname');
Thanks in advance for your help!
0 commentaires
Réponses (1)
Ashish Uthama
le 13 Mar 2013
You could think of something along these lines:
(air code, as in I havent tested it)
modelNames = {'m1, m2};
varNames = {'a','b'};
for mInd = 1:numel(modelNames)
fileName = modelnames{mInd};
for vInd = 1:numel(varNames)
if(exist(fileName,'f')) % please see doc, I think there is a syntax option to check for the existence of a file using its name
try
varName = varNames{vInd};
data = ncread(fileName,varName);
catch ALL % better to see one failure when the variable does not exist, use lasterr and check for the specific exception issued.
disp(['Could not read ' filname' for ' varName]);
end
end
end
end
0 commentaires
Voir également
Catégories
En savoir plus sur NetCDF dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!