Skip to content
Snippets Groups Projects
dev_correctBucket.m 3.6 KiB
Newer Older
clc
clear
close all

% Get TSG and bucket data
% -----------------------
% tsg    = getappdata( hMainFig, 'tsg_data');
% bucket = getappdata( hMainFig, 'bucket_data');

% Lecture fichier TSG
% -------------------
filename = 'F:\work\M_TsgQc\tsg_data\past0601.txt';
[tsg, error] = dev_readTsg( filename);

% Lecture fichier bucket
% -----------------------
filename = 'F:\work\M_TsgQc\tsg_data\past0601.btl';
[bucketASCII, error] = dev_readBucket( filename);
% Salinity, in one 1 hour interval, should not depart the average for more
% than SAL_STD_MAX standard deviation
% -----------------------------------------------------------------------

% 1 hour interval expressed in MATLAB serial Number
% -------------------------------------------------
TSG_DT_SMOOTH = datenum(0, 0, 0, 1, 0 , 0);

% dt between 2 tsg measurements
% -----------------------------
TSG_SAMPLING_TIME = datenum(0, 0, 0, 0, 5 , 0);
% ou plus general
TSG_SAMPLING_TIME = tsg.TIME(2) - tsg.TIME(1);

% Period used to comput the correction
% ------------------------------------
COR_TIME_WINDOWS = 10;
% Running average of TSG time series over TSG_DT_SMOOTH hour.
% Salinity in one INTERVAL_SMOOTHING hour interval, should not depart the
% average for more than SAL_STD_LIM
%
% *************************************************************************

[psal_smooth, nval] = ...
      dev_moveaverage(tsg.TIME, tsg.PSAL, TSG_DT_SMOOTH, TSG_STDMAX);

% Merge the 2 types of 'bucket' records, if they exists
% -----------------------------------------------------
bucketNETCDF      = bucketASCII;
bucketNETCDF.TIME = bucketNETCDF.TIME + 1;
bucketNETCDF.PSAL = bucketNETCDF.PSAL + 1;
bucketNETCDF = struct([]);
sample = dev_mergesample( bucketNETCDF, bucketASCII);
  
% *************************************************************************
%                             Second Step
% 
% Co-location of samples and TSG measurements
% Compute the sample-TSG differences

sample = dev_diffTsgSample(tsg, psal_smooth, sample, TSG_SAMPLING_TIME);
Yves Gouriou's avatar
Yves Gouriou committed
dateMin = tsg.TIME(5000);
dateMax = tsg.TIME(10000);
tsg = dev_corMethod1(tsg, sample, dateMin, dateMax, COR_TIME_WINDOWS);


% ******************************************************************
%                                   Trac
% ******************************************************************    
figure
plot( tsg.TIME, tsg.PSAL, 'k' );
hold on
plot( tsg.TIME, psal_smooth, 'r' );

figure
hist(nval, 1:13)

figure
plot( tsg.TIME, psal_smooth, 'k' );
hold on
ind = find( sample.PSAL_QC == 1 & sample.TYPE == 1); 
plot( sample.TIME(ind), sample.PSAL(ind), '.b' );
ind = find( sample.PSAL_QC == 1 & sample.TYPE == 2); 
plot( sample.TIME(ind), sample.PSAL(ind), '.g' );
datetick('x');
hold off

ind = find( sample.PSAL_QC == 0 ); 
if ~isempty(ind)
    plot( sample.TIME(ind), sample.PSAL(ind), '.r' );
ind = find( sample.PSAL_QC == 1 & sample.TYPE == 1); 
plot( sample.TIME(ind), sample.PSAL(ind), '.b' );
hold on
ind = find( sample.PSAL_QC == 1 & sample.TYPE == 2); 
plot( sample.TIME(ind), sample.PSAL(ind), '.g' );
datetick('x');

figure
plot( tsg.TIME, tsg.PSAL, 'k' );
hold on
plot( tsg.TIME, tsg.PSAL_ADJ, 'r' );
plot( tsg.TIME, tsg.PSAL_ADJ - tsg.PSAL_ERR, 'b' );
plot( tsg.TIME, tsg.PSAL_ADJ + tsg.PSAL_ERR, 'b' );
ind = find( sample.PSAL_QC == 1 & sample.TYPE == 1); 
plot( sample.TIME(ind), sample.PSAL(ind), '.b', 'Markersize', 6 );
ind = find( sample.PSAL_QC == 1 & sample.TYPE == 2); 
plot( sample.TIME(ind), sample.PSAL(ind), '.g', 'Markersize', 6 );
datetick('x');