Access .txt and .csv, edit data, error statistics

1 view (last 30 days)
Hi guys!
I would appreciate your help on the following:
I have several files (attached you can find two of them) that contain measured (.txt) and simulated (.csv) hourly values for some meteorological variables. I am only interested in temperature and relative humidity. The simulated period run from 01-Jul-2019 to 30-Sep-2019, while for the observations, I have a couple of months more.
What I need to do is open both files for every station (here I attached only "Airport"), access the dates that both files contain data and produce graphs and error metrics.
Any ideas please?

Accepted Answer

Allen on 26 Jan 2020
A basic method for importing only the Temp and RH data into tables
filename = 'Airport.csv';
opts = detectImportOptions(filename);
opts.SelectedVariableNames = opts.SelectedVariableNames(16:17); % Columns 16 and 17 from .csv are temp and RH
data1 = readtable(filename,opts);
filename = 'Hourly Data Airport 2019.txt';
opts = detectImportOptions(filename);
opts.SelectedVariableNames = opts.SelectedVariableNames(2:3); % Columns 2 and 3 from .csv are temp and RH
data2 = readtable(filename,opts);
Allen on 27 Jan 2020
You could assign data dynamically to a structure where the *.csv filename is used as the fieldname. This way you use a loop to handle multiple stations.
files = {'Airport.csv','Hourly Data Airport 2019.txt'
'Martiou.csv','Hourly Data Martiou 2019.txt'}; % You may need to add filepaths
for i=1:size(file,1)
[~,fn,~] = fileparts(files{i,1}); % Splits the filename into path, file, extension
fldnm = matlab.lang.makeValidName(fn); % This converts the filename into a valid string to use as a fieldname
CSV.(fldnm).opts = detectImportOptions(file{i,1});
CSV.(fldnm).opts.SelectedVariableNames = CSV.(fldnm).opts.SelectedVariableNames(16:17);
CSV.(fldnm).data = readtable(file{i,1},CSV.(fldnm).opts);
TXT.(fldnm).opts = detectImportOptions(file{i,2});
TXT.(fldnm).opts.SelectedVariableNames = TXT.(fldnm).opts.SelectedVariableNames(2:3);
TXT.(fldnm).data = readtable(file{i,2},TXT.(fldnm).opts);

Sign in to comment.

More Answers (0)


Find more on Structures in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!