-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnightPostProc.m
48 lines (35 loc) · 4.21 KB
/
nightPostProc.m
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
%% Setup the Import Options and import the data (generated by MatLab)
opts = delimitedTextImportOptions("NumVariables", 116);
% Specify range and delimiter
opts.DataLines = [3, Inf];
opts.Delimiter = "\t";
% Specify column names and types
opts.VariableNames = ["Year", "DoY", "Hour", "NEE", "LE", "H", "Rg", "Tair", "Tsoil", "rH", "VPD", "Ustar", "season", "Ustar_uStar_Thres", "Ustar_uStar_fqc", "NEE_uStar_orig", "NEE_uStar_f", "NEE_uStar_fqc", "NEE_uStar_fall", "NEE_uStar_fall_qc", "NEE_uStar_fnum", "NEE_uStar_fsd", "NEE_uStar_fmeth", "NEE_uStar_fwin", "Ustar_U05_Thres", "Ustar_U05_fqc", "NEE_U05_orig", "NEE_U05_f", "NEE_U05_fqc", "NEE_U05_fall", "NEE_U05_fall_qc", "NEE_U05_fnum", "NEE_U05_fsd", "NEE_U05_fmeth", "NEE_U05_fwin", "Ustar_U50_Thres", "Ustar_U50_fqc", "NEE_U50_orig", "NEE_U50_f", "NEE_U50_fqc", "NEE_U50_fall", "NEE_U50_fall_qc", "NEE_U50_fnum", "NEE_U50_fsd", "NEE_U50_fmeth", "NEE_U50_fwin", "Ustar_U95_Thres", "Ustar_U95_fqc", "NEE_U95_orig", "NEE_U95_f", "NEE_U95_fqc", "NEE_U95_fall", "NEE_U95_fall_qc", "NEE_U95_fnum", "NEE_U95_fsd", "NEE_U95_fmeth", "NEE_U95_fwin", "Tair_orig", "Tair_f", "Tair_fqc", "Tair_fall", "Tair_fall_qc", "Tair_fnum", "Tair_fsd", "Tair_fmeth", "Tair_fwin", "VPD_orig", "VPD_f", "VPD_fqc", "VPD_fall", "VPD_fall_qc", "VPD_fnum", "VPD_fsd", "VPD_fmeth", "VPD_fwin", "Rg_orig", "Rg_f", "Rg_fqc", "Rg_fall", "Rg_fall_qc", "Rg_fnum", "Rg_fsd", "Rg_fmeth", "Rg_fwin", "PotRad_U95", "FP_NEEnight_U95", "FP_Temp_U95", "E_0_U95", "R_ref_U95", "Reco_U95", "GPP_U95_f", "GPP_U95_fqc", "PotRad_U50", "FP_NEEnight_U50", "FP_Temp_U50", "E_0_U50", "R_ref_U50", "Reco_U50", "GPP_U50_f", "GPP_U50_fqc", "PotRad_U05", "FP_NEEnight_U05", "FP_Temp_U05", "E_0_U05", "R_ref_U05", "Reco_U05", "GPP_U05_f", "GPP_U05_fqc", "PotRad_uStar", "FP_NEEnight_uStar", "FP_Temp_uStar", "E_0_uStar", "R_ref_uStar", "Reco_uStar", "GPP_uStar_f", "GPP_uStar_fqc"];
opts.VariableTypes = ["double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double"];
% Specify file level properties
opts.ExtraColumnsRule = "ignore";
opts.EmptyLineRule = "read";
% Import the data
filePath = append(pwd, '\', outFile, '.txt');
nightdata = readtable(filePath, opts);
clear opts
disp(append(fileName, ' Imported to Matlab'))
%% Post Processing of Data
nightdata([1],:) = []; %delete the first row of unit values
nightReco = nightdata.Reco_uStar; %separates Ecosystem Respiration column from the table
nightGPP = nightdata.GPP_uStar_f; %separates GPP column from the table
% separates YDH columns into a datetime vector
nightYear = nightdata.Year;
nightDoY = nightdata.DoY;
nightHour = nightdata.Hour;
even = find(mod(nightHour,1) == 0);
odd = find(mod(nightHour,1) ~= 0);
half(even) = datetime(nightYear(even,:),1,nightDoY(even,:),floor(nightHour(even,:)),0,0);
half(odd) = datetime(nightYear(odd,:),1,nightDoY(odd,:),floor(nightHour(odd,:)),30,0);
nightDate_table = half';
% makes a timetable with the datetime vector, Reco, GPP
nighttime = timetable(nightDate_table, nightReco, nightGPP);
% post processing steps to set night values (solar radiation < 20) of GPP to 0
bad = find(nightdata.Rg < 20);
newGPP = nighttime.nightGPP_vals;
newGPP(bad) = 0;