% сшиваем различные фрагменты данных FGE в один mat-файл

clear,, close all

% load frg_mat_png\FRG_20250903_dHdDdZ_ini.mat
% file_1='fge_from_pev_20250902_200930-20250903_013909_dHdDdZ.mat';
% file_2='fge_from_pev_20250903_001915-20250904_002014_dHdDdZ.mat';
% dT1=+5/86400;

% load frg_mat_png\FRG_20250901_dHdDdZ_ini.mat
% file_1='fge_from_pev_20250831_034151-20250901_034150_dHdDdZ.mat';
% file_2='fge_from_pev_20250901_005941-20250902_010040_dHdDdZ.mat';
% dT1=-10/86400;

% load frg_mat_png\FRG_20250904_dHdDdZ_ini.mat
% file_1='fge_from_pev_20250903_205642-20250904_205741_dHdDdZ.mat';
% file_2='fge_from_pev_20250904_001247-20250905_001246_dHdDdZ.mat';
% dT1=+5/86400;

% load frg_mat_png\FRG_20250905_dHdDdZ_ini.mat
% file_1='fge_from_pev_20250904_233646-20250905_233645_dHdDdZ.mat';
% file_2='fge_from_pev_20250905_195453-20250905_235952_dHdDdZ.mat';
% dT1=+7/86400;
% dT2=-0/86400;

% load frg_mat_png\FRG_20250906_dHdDdZ_ini.mat
% file_1='fge_from_pev_20250905_235944-20250906_195443_dHdDdZ.mat';
% file_2='fge_from_pev_20250906_204948-20250906_234747_dHdDdZ.mat';
% dT1=+0/86400;
% dT2=-0/86400;

% load frg_mat_png\FRG_20250907_dHdDdZ_ini.mat
% file_1='fge_from_pev_20250906_204948-20250906_234747_dHdDdZ.mat';
% file_2='fge_from_pev_20250907_002231-20250907_214530_dHdDdZ.mat';
% dT1=+0/86400;
% dT2=-0/86400;

% load frg_mat_png\FRG_20250908_dHdDdZ_ini.mat
% file_1='fge_from_pev_20250908_001443-20250908_020736_dHdDdZ.mat';
% file_2='fge_from_pev_20250908_200048-20250909_015759_dHdDdZ.mat';
% dT1=+0/86400;
% dT2=-0/86400;

% load frg_mat_png\FRG_20250909_dHdDdZ_ini.mat
% file_1='fge_from_pev_20250908_200048-20250909_015759_dHdDdZ.mat';
% file_2='fge_from_pev_20250909_000106-20250909_220759_dHdDdZ.mat';
% dT1=+57/86400;
% dT2=-3/86400;

% load frg_mat_png\FRG_20250910_dHdDdZ_ini.mat
% file_1='fge_from_pev_20250909_000106-20250909_220759_dHdDdZ.mat';
% file_2='fge_from_pev_20250910_000117-20250911_000024_dHdDdZ.mat';
% dT1=+0/86400;
% dT2=+4/86400;

% load frg_mat_png\FRG_20250911_dHdDdZ_ini.mat
% file_1='fge_from_pev_20250910_045519-20250911_090918_dHdDdZ.mat';
% file_2='fge_from_pev_20250911_001645-20250912_001755_dHdDdZ.mat';
% dT1=+0/86400;
% dT2=+0/86400;

load frg_mat_png\FRG_20250912_dHdDdZ_ini.mat
file_1='fge_from_pev_20250911_001645-20250912_001755_dHdDdZ.mat';
file_2='fge_from_pev_20250912_000048-20250912_234641_dHdDdZ.mat';
dT1=-74/86400;
dT2=+0/86400;

T0=datenum(2025,09,12); [year0,mon0,day0]=datevec(T0);

load(file_1,'Tv','dHv','dDv','dZv')
T1=Tv+dT1; dH1=dHv; dD1=dDv; dZ1=dZv;
% Tsh1=datenum('11-Sep-2025 05:13:56');

load(file_2,'Tv','dHv','dDv','dZv')
T2=Tv+dT2; dH2=dHv; dD2=dDv; dZ2=dZv;
% Tsh2=datenum('11-Sep-2025 01:00:22');

% dT=Tsh1-Tsh2; % сдвиг между кривыми после 00:00
% k=T1>datenum('11-Sep-2025 03:00:00');
% T1(k)=T1(k)-dT;

plot(T1,dH1,'o-',T2,dH2,'x-','MarkerSize',2),datetick
% return

% ищем одновременные измерения - сравниваем время в сек * 10 и округляем
ts1=round((T1-T0)*86400*10);
ts2=round((T2-T0)*86400*10);
[k1,k2]=ismember_digit(ts1,ts2,9,1);
plot(T1(~k1),dH1(~k1),T2,dH2),datetick

% return

% объединяем уникальные данные
T=[T1(~k1); T2];
dH=[dH1(~k1); dH2]; dD=[dD1(~k1); dD2]; dZ=[dZ1(~k1); dZ2];
% оставляем только требуемые сутки T0
k=fix(T)==T0;
T=T(k); dH=dH(k); dD=dD(k); dZ=dZ(k);

% return

% заполняем NaN-ми пропуски (где нет времени и значений)
Tu=datenum(year0,mon0,day0,0,0,(0:0.5:86400-0.1)'); % равномерная сетка для FGE
dHu=ones(length(Tu),1)*NaN; dDu=dHu; dZu=dHu;
k1=round((T-T0)*86400*10);
k2=round((Tu-T0)*86400*10);
[k1,k2]=ismember_digit(T,Tu,8,1);
dHu(k2)=dH(k1); dDu(k2)=dD(k1); dZu(k2)=dZ(k1);

figure(1)
plot(Tu,dHu-nanmean(dHu),Tu,dDu-nanmean(dDu),Tu,dZu-nanmean(dZu)), datetick
legend('dH','dD','dZ')

% return

[kfge,kfrg]=ismember_digit(Tu,Tj,8);

h02=figure(02); set(h02,'Position',get(0,'Screensize'));
subplot(211)
plot(Tu,dHu-nanmean(dHu),Tj,dHj-nanmean(dHj)), datetick
legend('FGE','FRG'), ylabel('dH-mean(dH), nT'), title(datestr(T0))
subplot(212)
plot(Tu(kfge),dHu(kfge)-nanmean(dHu(kfge))-(dHj(kfrg)-nanmean(dHj(kfrg))))
datetick
file_fig=['final_mat/FGE_' datestr(min(Tv),'yyyymmdd') '_restored_from_pev_H.png'];
fig=gcf; fig.PaperPositionMode = 'auto';
print(file_fig, '-dpng', '-r0')

h03=figure(03); set(h03,'Position',get(0,'Screensize'));
subplot(211)
plot(Tu,dDu-nanmean(dDu),Tj,dDj-nanmean(dDj)), datetick
legend('FGE','FRG'), ylabel('dD-mean(dD), nT'), title(datestr(T0))
subplot(212)
plot(Tu(kfge),dDu(kfge)-nanmean(dDu(kfge))-(dDj(kfrg)-nanmean(dDj(kfrg))))
datetick
file_fig=['final_mat/FGE_' datestr(min(Tv),'yyyymmdd') '_restored_from_pev_D.png'];
fig=gcf; fig.PaperPositionMode = 'auto';
print(file_fig, '-dpng', '-r0')

h04=figure(04); set(h04,'Position',get(0,'Screensize'));
subplot(211)
plot(Tu,dZu-nanmean(dZu),Tj,dZj-nanmean(dZj)), datetick
legend('FGE','FRG'), ylabel('dZ-mean(dZ), nT'), title(datestr(T0))
subplot(212)
plot(Tu(kfge),dZu(kfge)-nanmean(dZu(kfge))-(dZj(kfrg)-nanmean(dZj(kfrg))))
datetick
file_fig=['final_mat/FGE_' datestr(min(Tv),'yyyymmdd') '_restored_from_pev_Z.png'];
fig=gcf; fig.PaperPositionMode = 'auto';
print(file_fig, '-dpng', '-r0')

commandwindow
file=['final_mat/FGE_' datestr(T0,'yyyymmdd') '_restored_from_pev.mat'];
save(file,'Tu','dHu','dDu','dZu')
