Read netCDFs in loop and export to table with different sizes
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Siegmund Nuyts
el 23 de Sept. de 2022
Comentada: Siegmund Nuyts
el 27 de Sept. de 2022
I am reading several netCDF files with a datetime and corresponding data.
All datafiles have a different lenght, so I thought to find the common range of datetime for all files and save the corresponding data in 1 table so that I have a table like:
[datetime sensor1 sensor2 sensor3 sensor...]
I already found a way to read the files and find the common date but struggle to get evertyhing into 1 table.
Does anyone has a suggestion?
addpath(genpath('./'))
path = 'F:\Waterlevel/';
netCDF = dir([path,strcat('**/Sensor_*')]);
for i = 1:length(netCDF)
baseFilename = netCDF(i).name;
fullFileName = fullfile(path, baseFilename);
fprintf(1, 'Now reading %s\n', fullFileName);
nt = ncread(fullFileName, 'datetime');
Times = datetime(nt, 'convertFrom', 'posixtime', 'Format', 'yyyy-MM-dd HH:mm:ss');
nlevel = ncread(fullFileName, 'level');
[commondates, whereina, whereinb] = intersect(Times,Times(1:length(i)));
firstcommon = commondates(1);
end
0 comentarios
Respuesta aceptada
Eric Sofen
el 23 de Sept. de 2022
Editada: Eric Sofen
el 26 de Sept. de 2022
I assume nlevel is the sensor data? If so, build up a cell array of timetables in the loop, then synchronize them.
Edit: fixed concatenation code.
addpath(genpath('./'))
path = 'F:\Waterlevel/';
netCDF = dir([path,'**/Sensor_*']);
alldata = {};
for i = 1:length(netCDF)
baseFilename = netCDF(i).name;
fullFileName = fullfile(path, baseFilename);
fprintf(1, 'Now reading %s\n', fullFileName);
nt = ncread(fullFileName, 'datetime');
Times = datetime(nt, 'convertFrom', 'posixtime', 'Format', 'yyyy-MM-dd HH:mm:ss');
nlevel = ncread(fullFileName, 'level');
alldata = [alldata, {timetable(Times,nlevel)}];
end
finaldata = synchronize(alldata{:},'intersection');
4 comentarios
Eric Sofen
el 26 de Sept. de 2022
Whoops! alldata should be built up as a cell array of tables:
alldata = [alldata, {timetable(Times, nlevel)}];
Más respuestas (0)
Ver también
Categorías
Más información sobre NetCDF en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!