pt.sunrise = nan(pt.nt,pt.nl);
id = pt.time>tim_d(i_t)-1 & pt.time<=tim_d(i_t);
F=griddedInterpolant({lat_d,lon_d},sunrs_e(:,:,i_t-1));
pt.sunset(id,:)=repmat(F(pt.lat,pt.lon),sum(id),1);
F=griddedInterpolant({lat_d,lon_d},sunrs_b(:,:,i_t));
pt.sunrise(id,:)=repmat(F(pt.lat,pt.lon),sum(id),1);
Ddist_sm = pdist2([dclat dclon] ,[pt.lat(:) pt.lon(:)], @lldistkm);
tmp1 = repmat(Ddist_sm(:,1),1,pt.nat);
tmp2 = repmat(Ddist_sm(:,2),1,pt.nat);
Ddist=[ repmat(tmp1(~multi.isnan),1,pt.nat) repmat(tmp2(~multi.isnan),1,pt.nat)];
tmp=repmat(pt.atime',numel(multi.r),1);
Dtime = pdist2(tmp(~multi.isnan), repmat(pt.atime, pt.nl, 1));
Cab = multi.cov.C(Ddist,Dtime);
LAT = repmat(pt.lat,pt.nt,1);
LON = repmat(pt.lon,pt.nt,1);
interpo_nn = nan(pt.nt,pt.nl);
interpo_l = nan(pt.nt,pt.nl);
interpo_n = nan(pt.nt,pt.nl);
Fnn = scatteredInterpolant(data.lat,data.lon,data.time.*ratio_coord_time,data.dens,'nearest');
Fl = scatteredInterpolant(data.lat,data.lon,data.time.*ratio_coord_time,data.dens,'linear');
Fn = scatteredInterpolant(data.lat,data.lon,data.time.*ratio_coord_time,data.dens,'natural');
interpo_nn(pt.mask_day) = Fnn(LAT(pt.mask_day),LON(pt.mask_day),datenum(pt.time2D(pt.mask_day)).*ratio_coord_time) ;
interpo_l(pt.mask_day) = Fl(LAT(pt.mask_day),LON(pt.mask_day),datenum(pt.time2D(pt.mask_day)).*ratio_coord_time) ;
interpo_n(pt.mask_day) = Fn(LAT(pt.mask_day),LON(pt.mask_day),datenum(pt.time2D(pt.mask_day)).*ratio_coord_time);
T_Herzeele = readtable('data/MTR_SorL_allBirds_hourly_Hrange50_1500asl_Hstep1450_inclFlight_13dBadj.csv','TreatAsEmpty','NA');
T_Herzeele(strcmp(T_Herzeele.OperMod,'L'),:)=[];
T_Herzeele.is_night = T_Herzeele.is_night==1;
T_Herzeele.dens = T_Herzeele.mtr/60/60./(T_Herzeele.meanSpeed./1000);
T_Herzeele.denstrans = T_Herzeele.dens.^pow;
T_Sem = readtable('data/SEM_MTR_allBirds_SeptOct2016_1h_2000m_inclFlight_sepPulse.csv','TreatAsEmpty','NA');
T_Sem(strcmp(T_Sem.oper_mod,'L'),:)=[];
T_Sem(strcmp(T_Sem.oper_mod,'M'),:)=[];
T_Sem.is_night = T_Sem.is_night==1;
T_Sem.dens = T_Sem.mtr/60/60./(T_Sem.meanSpeed./1000);
T_Sem.denstrans = T_Sem.dens.^pow;
for i_t=1:size(T_Herzeele,1)
id = pt.time >= T_Herzeele.Tint(i_t) & pt.time < (T_Herzeele.Tint(i_t)+1/24);
T_Herzeele.denst_est(i_t) = nanmean(pt.denst_est(id,1));
T_Herzeele.denst_sig(i_t) = nanmean(pt.denst_sig(id,1));
T_Herzeele.dens_est(i_t) = nanmean(pt.dens_est(id,1));
T_Herzeele.dens_sig(i_t) = nanmean(pt.dens_sig(id,1));
T_Herzeele.interpo_nn(i_t,:) = nanmean(interpo_nn(id,1));
T_Herzeele.interpo_l(i_t,:) = nanmean(interpo_l(id,1));
T_Herzeele.interpo_n(i_t,:) = nanmean(interpo_n(id,1));
id = pt.time >= T_Sem.Tint(i_t) & pt.time < (T_Sem.Tint(i_t)+1/24);
T_Sem.denst_est(i_t) = nanmean(pt.denst_est(id,2));
T_Sem.denst_sig(i_t) = nanmean(pt.denst_sig(id,2));
T_Sem.dens_est(i_t) = nanmean(pt.dens_est(id,2));
T_Sem.dens_sig(i_t) = nanmean(pt.dens_sig(id,2));
T_Sem.interpo_nn(i_t,:) = nanmean(interpo_nn(id,2));
T_Sem.interpo_l(i_t,:) = nanmean(interpo_l(id,2));
T_Sem.interpo_n(i_t,:) = nanmean(interpo_n(id,2));
figure('position',[0 0 1000 600]);
plot(T_Herzeele.Tint, T_Herzeele.denst_est - T_Herzeele.denst_sig,'--k');
h1=plot(T_Herzeele.Tint, T_Herzeele.denst_est,'-k');
plot(T_Herzeele.Tint, T_Herzeele.denst_est + T_Herzeele.denst_sig,'--k');
h2=plot(T_Herzeele.Tint,T_Herzeele.interpo_nn.^pow,'-b','linewidth',2);
h3=plot(T_Herzeele.Tint,T_Herzeele.interpo_l.^pow,'-g','linewidth',2);
h4=plot(T_Herzeele.Tint,T_Herzeele.interpo_n.^pow,'-y','linewidth',2);
h5=plot(T_Herzeele.Tint(T_Herzeele.is_night),T_Herzeele.denstrans(T_Herzeele.is_night),'.r','linewidth',2);
legend([h1 h2 h3 h4 h5],'Estimation','Nearest','linear','Natural','Observation')
axis tight;xlim([start_date end_date]);xlabel('Time (day)'); ylabel('Z^p');
plot(T_Sem.Tint, T_Sem.denst_est - T_Sem.denst_sig,'--k');
plot(T_Sem.Tint, T_Sem.denst_est,'-k');
plot(T_Sem.Tint, T_Sem.denst_est + T_Sem.denst_sig,'--k');
plot(T_Sem.Tint,T_Sem.interpo_nn.^pow,'-b','linewidth',2);
plot(T_Sem.Tint,T_Sem.interpo_l.^pow,'-g','linewidth',2);
plot(T_Sem.Tint,T_Sem.interpo_n.^pow,'-y','linewidth',2);
plot(T_Sem.Tint(T_Sem.is_night),T_Sem.denstrans(T_Sem.is_night),'.r','linewidth',2);
axis tight;xlim([start_date end_date]);xlabel('Time (day)'); ylabel('Z^p');
figure('position',[0 0 1000 600]);
plot(T_Herzeele.Tint, T_Herzeele.dens_est - T_Herzeele.dens_sig,'--k');
h1=plot(T_Herzeele.Tint, T_Herzeele.dens_est,'-k');
plot(T_Herzeele.Tint, T_Herzeele.dens_est + T_Herzeele.dens_sig,'--k');
h2=plot(T_Herzeele.Tint,T_Herzeele.interpo_nn,'-b','linewidth',2);
h3=plot(T_Herzeele.Tint,T_Herzeele.interpo_l,'-g','linewidth',2);
h4=plot(T_Herzeele.Tint,T_Herzeele.interpo_n,'-y','linewidth',2);
h5=plot(T_Herzeele.Tint(T_Herzeele.is_night),T_Herzeele.dens(T_Herzeele.is_night),'.r','linewidth',2);
axis tight;xlim([start_date end_date]);xlabel('Time (day)'); ylabel('Z^p');
legend([h1 h2 h3 h4 h5],'Estimation','Nearest','linear','Natural','Observation')
plot(T_Sem.Tint, T_Sem.dens_est - T_Sem.dens_sig,'--k');
plot(T_Sem.Tint, T_Sem.dens_est,'-k');
plot(T_Sem.Tint, T_Sem.dens_est + T_Sem.dens_sig,'--k');
plot(T_Sem.Tint,T_Sem.interpo_nn,'-b','linewidth',2);
plot(T_Sem.Tint,T_Sem.interpo_l,'-g','linewidth',2);
plot(T_Sem.Tint,T_Sem.interpo_n,'-y','linewidth',2);
plot(T_Sem.Tint(T_Sem.is_night),T_Sem.dens(T_Sem.is_night),'.r','linewidth',2);
axis tight;xlim([start_date end_date]);xlabel('Time (day)'); ylabel('Z^p');
pt_score.her.nee = (T_Herzeele.denst_est - T_Herzeele.denstrans) ./ T_Herzeele.denst_sig;
pt_score.her.nee_m = nanmean(pt_score.her.nee);
pt_score.her.nee_var = nanvar(pt_score.her.nee);
pt_score.her.n = sum(~isnan(pt_score.her.nee));
pt_score.her.rmse = sqrt(nanmean( (T_Herzeele.dens_est - T_Herzeele.dens).^2));
pt_score.her.rmse_nn = sqrt(nanmean( (T_Herzeele.interpo_nn - T_Herzeele.dens).^2));
pt_score.her.rmse_l = sqrt(nanmean( (T_Herzeele.interpo_l - T_Herzeele.dens).^2));
pt_score.her.rmse_n = sqrt(nanmean( (T_Herzeele.interpo_n - T_Herzeele.dens).^2));
pt_score.her.r2_dens = 1-nansum((T_Herzeele.dens_est-T_Herzeele.dens ).^2)/nansum((T_Herzeele.dens-nanmean(T_Herzeele.dens) ).^2);
pt_score.her.r2_nn = 1-nansum((T_Herzeele.interpo_nn-T_Herzeele.dens).^2)/nansum((T_Herzeele.dens-nanmean(T_Herzeele.dens) ).^2);
pt_score.her.r2_l = 1-nansum((T_Herzeele.interpo_l-T_Herzeele.dens).^2)/nansum((T_Herzeele.dens-nanmean(T_Herzeele.dens) ).^2);
pt_score.her.r2_n = 1-nansum((T_Herzeele.interpo_n-T_Herzeele.dens).^2)/nansum((T_Herzeele.dens-nanmean(T_Herzeele.dens) ).^2);
pt_score.her
ans =
nee: [1354×1 double]
nee_m: 0.4853
nee_var: 0.7718
n: 168
rmse: 9.2235
rmse_nn: 9.7975
rmse_l: 8.9119
rmse_n: 8.9495
r2_dens: 0.8698
r2_nn: 0.8531
r2_l: 0.8784
r2_n: 0.8774
pt_score.sem.nee = (T_Sem.denst_est - T_Sem.denstrans) ./ T_Sem.denst_sig;
pt_score.sem.nee_m = nanmean(pt_score.sem.nee);
pt_score.sem.nee_var = nanvar(pt_score.sem.nee);
pt_score.sem.n = sum(~isnan(pt_score.sem.nee));
pt_score.sem.rmse = sqrt(nanmean( (T_Sem.dens_est - T_Sem.dens).^2));
pt_score.sem.rmse_nn = sqrt(nanmean( (T_Sem.interpo_nn - T_Sem.dens).^2));
pt_score.sem.rmse_l = sqrt(nanmean( (T_Sem.interpo_l - T_Sem.dens).^2));
pt_score.sem.rmse_n = sqrt(nanmean( (T_Sem.interpo_n - T_Sem.dens).^2));
pt_score.sem.r2_dens = 1-nansum((T_Sem.dens_est-T_Sem.dens ).^2)/nansum((T_Sem.dens-nanmean(T_Sem.dens) ).^2);
pt_score.sem.r2_nn = 1-nansum((T_Sem.interpo_nn-T_Sem.dens).^2)/nansum((T_Sem.dens-nanmean(T_Sem.dens) ).^2);
pt_score.sem.r2_l = 1-nansum((T_Sem.interpo_l-T_Sem.dens).^2)/nansum((T_Sem.dens-nanmean(T_Sem.dens) ).^2);
pt_score.sem.r2_n = 1-nansum((T_Sem.interpo_n-T_Sem.dens).^2)/nansum((T_Sem.dens-nanmean(T_Sem.dens) ).^2);
pt_score.sem
ans =
nee: [1463×1 double]
nee_m: -0.6810
nee_var: 1.4520
n: 231
rmse: 19.7296
rmse_nn: 24.2551
rmse_l: 21.6694
rmse_n: 18.9431
r2_dens: 0.7270
r2_nn: 0.5875
r2_l: 0.6707
r2_n: 0.7484