edit_data.m
author A.M. Thurnherr <athurnherr@yahoo.com>
Wed, 17 Jan 2018 12:19:54 -0500
changeset 20 61b92f8fb463
parent 17 f5a63c03d9c8
permissions -rw-r--r--
Version IX_13
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     1
function d = edit_data(d,p)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     2
% function d = edit_data(d,p)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     3
%
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     4
% perform data editing (e.g. sidelobes, previous-ping interference, &c)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     5
%
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     6
% HISTORY:
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     7
%  Jul  3, 2004: - implemented side-lobe contamination editing
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     8
%  Jul 15, 2004: - implemented PPI contamination editing
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     9
%  Jul 16, 2004: - implemented cross-contamination editing
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    10
%  Jul 18, 2004: - added parameter defaults
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    11
%  Jul 21, 2004: - moved bin masking from [loadrdi.m]
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    12
%  Jul 23, 2004: - implemented ensemble skipping
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    13
%  May 18, 2006: - incorporated simple fix for multi-ping ensembles
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    14
%		   provided by Mattew Alford
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    15
%		 - disabled edit_spike_filter by default
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    16
%		 - changed edit_spike_filter_max_curv default value
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    17
%  Aug 13, 2013: - BUG: edit_sidelobes did not work for UL only data
15
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    18
%  Jul 13, 2014: - automatically edit bins 1 when blanking distance is zero
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    19
%  Jan 23, 2015: - BUG: automatic zero blanking editing had a typo
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    20
%		 - BUG: automatic zero blanking editing did not work with DL-only data
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    21
%		 - added p.edit_{dn,up}_bad_ensembles
17
f5a63c03d9c8 DoMORE-2
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 15
diff changeset
    22
%  Jul 21, 2015: - made bin-masking more permissive (allow indices > #bins)
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    23
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    24
%======================================================================
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    25
%                    E D I T _ D A T A . M 
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    26
%                    doc: Sat Jul  3 17:13:05 2004
17
f5a63c03d9c8 DoMORE-2
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 15
diff changeset
    27
%                    dlm: Tue Jul 21 11:39:18 2015
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    28
%                    (c) 2004 A.M. Thurnherr
17
f5a63c03d9c8 DoMORE-2
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 15
diff changeset
    29
%                    uE-Info: 126 23 NIL 0 0 72 0 2 8 NIL ofnI
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    30
%======================================================================
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    31
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    32
%----------------------------------------------------------------------
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    33
% Initialize & Set Default Parameters
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    34
%----------------------------------------------------------------------
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    35
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    36
d.ts_edited = d.ts; % save for plotting/inspection
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    37
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    38
% Set to list of bins to remove from data.
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    39
p=setdefv(p,'edit_mask_dn_bins',[]);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    40
p=setdefv(p,'edit_mask_up_bins',[]);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    41
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    42
% Set to 1 to remove side-lobe contaminated data near seabed and
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    43
% surface.
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    44
p=setdefv(p,'edit_sidelobes',1);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    45
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    46
% Set to 1 to implement time-domain spike filter on the data; 
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    47
% this removes interference from other acoustic instruments but,
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    48
% more importantly, can get rid of PPI when staggered pings
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    49
% are used. USING THIS FILTER WITH A CURVATURE CRITERION THAT IS
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    50
% TOO STRICT CAN SERIOUSLY DEGRADE THE VELOCITY PROFILES. THEREFORE,
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    51
% IT HAS BEEN DISABLED BY DEFAULT IN VERSION IX_3.
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    52
p=setdefv(p,'edit_spike_filter',0);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    53
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    54
% Spike filtering is done using 2nd-difference
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    55
% peak detection in time. This parameter gives the maximum
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    56
% target-strength 2nd derivative that's allowed. Set to larger
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    57
% values to weaken the filtering. (Check figure 14 to see if
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    58
% filter is too strong or too weak.) Setting the value of this
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    59
% parameter too low will seriously degrade the velocity profiles,
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    60
% without any apparent sign of trouble. The optimal value of this
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    61
% parameter depends on the instrument type.
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    62
p=setdefv(p,'edit_spike_filter_max_curv',5);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    63
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    64
% Set to 1 to remove data contaminated by previous-ping interference.
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    65
% NOTES: - Using the spike filter seems to work more robustly, as long
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    66
%     	   as staggered pings are used. Great care must be taken,
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    67
%	   however, to chose a good value for edit_spike_filter_max_curv.
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    68
p=setdefv(p,'edit_PPI',0);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    69
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    70
% PPI layer thickness in meters; the value is taken directly from Eric
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    71
% Firing's default (2*clip_margin = 180m).
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    72
p=setdefv(p,'edit_PPI_layer_thickness',180);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    73
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    74
% max distance from seabed at which PPI should be removed. This is
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    75
% an observed parameter and depends on the clarity of the water.
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    76
% Check Figure 14 to see whether this should be changed.
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    77
p=setdefv(p,'edit_PPI_max_hab',1000);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    78
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    79
% set this vector to enable skipping of ensembles; skipping vector
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    80
% is wrapped around, i.e. [1 0] skips all odd ensembles, [0 1 0] skips
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    81
% ensembles 2 5 8 11.... This filter is useful to process the casts
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    82
% with only half the data to see whether the two halves agree, which
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    83
% probably means that the cast can be trusted. Note that if staggered
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    84
% ping setup is used to avoid PPI, the skipping vector should leave
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    85
% adjacent ensembles intact, i.e. use something like [1 1 0 0] and
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    86
% [0 0 1 1].
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    87
p=setdefv(p,'edit_skip_ensembles',[]);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    88
15
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    89
% the following vectors can be used to edit out blocks of bad ensembles,
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    90
% caused, for example, by intermittent hardware failures. NOTE: it is
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    91
% assumed that the ensembles are numbered consecutively, starting with 1,
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    92
% i.e. the ensemble numbers in the data files are ignored. This may 
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    93
% not work as intended if the data files are trimmed during the DL/UL
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    94
% merge in [loardrdi.m]
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    95
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    96
p=setdefv(p,'edit_dn_bad_ensembles',[]);
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    97
p=setdefv(p,'edit_up_bad_ensembles',[]);
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    98
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    99
%----------------------------------------------------------------------
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   100
% Bin Masking
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   101
%----------------------------------------------------------------------
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   102
15
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   103
if length(d.zu)>0 && p.blnk_u==0
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   104
  disp(sprintf(' bin masking               : masking uplooker bin 1 because of zero blanking distance'));
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   105
  p.edit_mask_up_bins = [1 p.edit_mask_up_bins];
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   106
end
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   107
if p.blnk_d==0
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   108
  disp(sprintf(' bin masking               : masking downlooker bin 1 because of zero blanking distance'));
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   109
  p.edit_mask_dn_bins = [1 p.edit_mask_dn_bins];
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   110
end
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   111
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   112
if ~isempty(p.edit_mask_dn_bins) | ~isempty(p.edit_mask_up_bins)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   113
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   114
  nbad = 0;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   115
  if length(d.zu) > 0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   116
    for bi=1:length(p.edit_mask_up_bins)
17
f5a63c03d9c8 DoMORE-2
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 15
diff changeset
   117
      if p.edit_mask_up_bins(bi)<=p.nbin_u
f5a63c03d9c8 DoMORE-2
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 15
diff changeset
   118
         bn = length(d.zu)+1 - p.edit_mask_up_bins(bi);
f5a63c03d9c8 DoMORE-2
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 15
diff changeset
   119
	 nbad = nbad + length(find(isfinite(d.weight(bn,:))));
f5a63c03d9c8 DoMORE-2
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 15
diff changeset
   120
	 d.weight(bn,:) = NaN; d.ts_edited(bn,:) = NaN;
f5a63c03d9c8 DoMORE-2
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 15
diff changeset
   121
      end
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   122
    end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   123
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   124
  if length(d.zd) > 0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   125
    for bi=1:length(p.edit_mask_dn_bins)
17
f5a63c03d9c8 DoMORE-2
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 15
diff changeset
   126
      if p.edit_mask_dn_bins(bi)<=p.nbin_d
f5a63c03d9c8 DoMORE-2
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 15
diff changeset
   127
        bn = length(d.zu) + p.edit_mask_dn_bins(bi);
f5a63c03d9c8 DoMORE-2
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 15
diff changeset
   128
	nbad = nbad + length(find(isfinite(d.weight(bn,:))));
f5a63c03d9c8 DoMORE-2
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 15
diff changeset
   129
	d.weight(bn,:) = NaN; d.ts_edited(bn,:) = NaN;
f5a63c03d9c8 DoMORE-2
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 15
diff changeset
   130
      end
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   131
    end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   132
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   133
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   134
  disp(sprintf(' bin masking               : set %d weights to NaN',nbad));
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   135
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   136
end % if bin masking enabled
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   137
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   138
%----------------------------------------------------------------------
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   139
% Side-Lobe Contamination
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   140
%----------------------------------------------------------------------
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   141
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   142
if p.edit_sidelobes
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   143
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   144
  nbad = 0;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   145
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   146
  % first, the uplooker: d.z is -ve distance of ADCP from surface;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   147
  % Cell_length is in cm, i.e. 0.015*Cell_length is 1.5 x bin size
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   148
  % in m --- the same value used by Eric Firing's software
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   149
  
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   150
  if length(d.zu)==0 && d.zd(1)<0			% UL only (in DL structures)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   151
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   152
    for b=1:length(d.zd)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   153
      zlim(b,:) = (1 - cos(pi*d.down.Beam_angle/180)) * d.z ...
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   154
		- 0.015*d.down.Cell_length;
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   155
    end
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   156
    ibad = find(d.izm > zlim);
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   157
    nbad = nbad + length(find(isfinite(d.weight(ibad))));
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   158
    d.weight(ibad) = NaN; d.ts_edited(ibad) = NaN;
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   159
  
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   160
  elseif length(d.zu > 0)				% DL/UL combo
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   161
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   162
    for b=1:length(d.zu)+length(d.zd)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   163
      zlim(b,:) = (1 - cos(pi*d.up.Beam_angle/180)) * d.z ...
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   164
		- 0.015*d.up.Cell_length;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   165
    end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   166
    ibad = find(d.izm > zlim);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   167
    nbad = nbad + length(find(isfinite(d.weight(ibad))));
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   168
    d.weight(ibad) = NaN; d.ts_edited(ibad) = NaN;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   169
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   170
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   171
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   172
  % now, the downlooker: p.zbottom is the +ve depth of the sea bed; therefore,
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   173
  % -d.z - p.zbottom is the -ve distance from the sea bed
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   174
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   175
  for b=1:length(d.zu)+length(d.zd)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   176
    zlim(b,:) = -p.zbottom ...
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   177
	      + (1 - cos(pi*d.down.Beam_angle/180)) * (d.z+p.zbottom) ...
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   178
	      + 0.015*d.down.Cell_length;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   179
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   180
  ibad = find(d.izm < zlim);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   181
  nbad = nbad + length(find(isfinite(d.weight(ibad))));
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   182
  d.weight(ibad) = NaN; d.ts_edited(ibad) = NaN;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   183
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   184
  disp(sprintf(' side-lobe contamination   : set %d weights to NaN',nbad));
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   185
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   186
end %if p.edit_sidelobes
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   187
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   188
%----------------------------------------------------------------------
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   189
% Time-Domain Spike Filter
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   190
%----------------------------------------------------------------------
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   191
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   192
if p.edit_spike_filter
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   193
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   194
  nbad = 0;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   195
  for b=1:length(d.zd)+length(d.zu)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   196
    ibad = find(diff(diff(d.ts(b,:))) < -1*p.edit_spike_filter_max_curv) + 1;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   197
    nbad = nbad + length(find(isfinite(d.weight(b,ibad))));
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   198
    d.weight(b,ibad) = NaN; d.ts_edited(b,ibad) = NaN;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   199
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   200
  disp(sprintf(' spike filter              : set %d weights to NaN',nbad));
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   201
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   202
end %if p.edit_spike_filter
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   203
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   204
%----------------------------------------------------------------------
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   205
% Previous-Ping Interference
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   206
%----------------------------------------------------------------------
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   207
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   208
if p.edit_PPI
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   209
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   210
  % NB: at present, PPI filtering is only implemented for the downlooker
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   211
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   212
  nbad = 0;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   213
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   214
  % calc ping-intervals; dt(1) contains the difference (in seconds)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   215
  % between the first two ensembles (t(2) - t(1)).
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   216
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   217
  dt = diff(d.time_jul)*86400;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   218
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   219
  % adjust for multi-ping ensembles; THIS FIX, PROVIDED BY MATTHEW ALFORD,
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   220
  % DOES NOT WORK FOR IRREGULAR PINGING RATES (e.g. 10s ensembles of 3
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   221
  % pings each with 1s between pings)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   222
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   223
  dt = dt/d.down.Pings_per_Ensemble;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   224
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   225
  % use the mean sound speed below the approximate expected PPI depth;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   226
  % this is anal but not very expensive; using 1500m/s would be nearly
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   227
  % as good.
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   228
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   229
  if isfield(d,'ctdprof_z') & isfield(d,'ctdprof_ss')
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   230
    guess_z = -p.zbottom + 1500 * meannan(dt) / 2;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   231
    SS = meannan(d.ctdprof_ss(find(d.ctdprof_z > -guess_z)));
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   232
    if ~isfinite(SS), SS = 1500; end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   233
  else
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   234
    SS = 1500;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   235
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   236
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   237
  % calculate the depth limits to remove the PPI for all (but the first)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   238
  % ensembles; the beam-angle limits were found to be too conservative
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   239
  % and were replaced by a nominal layer_tickness.
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   240
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   241
  %PPI_min_beam_angle = 0.0 * d.down.Beam_angle;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   242
  %PPI_max_beam_angle = 1.2 * d.down.Beam_angle;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   243
  %PPI_max_z = -p.zbottom + SS * dt/2 * cos(pi/180 * PPI_min_beam_angle);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   244
  %PPI_min_z = -p.zbottom + SS * dt/2 * cos(pi/180 * PPI_max_beam_angle);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   245
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   246
  PPI_hab = SS * dt/2 * cos(pi/180 * d.down.Beam_angle);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   247
  PPI_hab(find(PPI_hab > p.edit_PPI_max_hab)) = inf;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   248
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   249
  PPI_min_z = -p.zbottom + PPI_hab - p.edit_PPI_layer_thickness / 2;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   250
  PPI_max_z = PPI_min_z + p.edit_PPI_layer_thickness;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   251
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   252
  % remove the contaminated data from the downlooker bins
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   253
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   254
  for b=length(d.zu)+1:length(d.zu)+length(d.zd)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   255
    ibad = find(d.izm(b,2:end) > PPI_min_z & d.izm(b,2:end) < PPI_max_z) + 1;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   256
    nbad = nbad + length(find(isfinite(d.weight(b,ibad))));
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   257
    d.weight(b,ibad) = NaN; d.ts_edited(b,ibad) = NaN;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   258
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   259
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   260
  disp(sprintf(' previous-ping interference: set %d weights to NaN',nbad));
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   261
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   262
end %if p.edit_PPI
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   263
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   264
%----------------------------------------------------------------------
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   265
% Ensemble Skipping
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   266
%----------------------------------------------------------------------
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   267
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   268
if ~isempty(p.edit_skip_ensembles)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   269
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   270
  nskipped = 0;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   271
  iskip = [];
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   272
  for i=1:length(p.edit_skip_ensembles)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   273
    if p.edit_skip_ensembles(i)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   274
      iskip = [iskip i:length(p.edit_skip_ensembles):length(d.time_jul)];
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   275
    end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   276
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   277
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   278
  for b=1:length(d.zd)+length(d.zu)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   279
    nskipped = nskipped + length(find(isfinite(d.weight(b,iskip))));
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   280
    d.weight(b,iskip) = NaN; d.ts_edited(b,iskip) = NaN;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   281
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   282
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   283
  disp(sprintf(' ensemble skipping         : set %d weights to NaN',nskipped));
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   284
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   285
end % if p.edit_skip_ensembles enabled
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   286
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   287
%----------------------------------------------------------------------
15
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   288
% remove blocks of bad ensembles from UL and/or DL data
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   289
%----------------------------------------------------------------------
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   290
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   291
if ~isempty(p.edit_dn_bad_ensembles) || ~isempty(p.edit_up_bad_ensembles)
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   292
  if ~isempty(p.edit_dn_bad_ensembles)
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   293
    dn_bad = 0; ibad = p.edit_dn_bad_ensembles;
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   294
    for b=length(d.zu)+1:length(d.zu)+length(d.zd)
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   295
      dn_bad = dn_bad + length(find(isfinite(d.weight(b,ibad))));
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   296
      d.weight(b,ibad) = NaN; d.ts_edited(b,ibad) = NaN;
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   297
    end
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   298
  end
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   299
  if ~isempty(p.edit_up_bad_ensembles)
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   300
    up_bad = 0; ibad = p.edit_up_bad_ensembles;
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   301
    for b=length(d.zu):-1:1
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   302
      up_bad = up_bad + length(find(isfinite(d.weight(b,ibad))));
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   303
      d.weight(b,ibad) = NaN; d.ts_edited(b,ibad) = NaN;
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   304
    end
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   305
  end
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   306
  disp(sprintf(' DL/UL ensemble editing    : set %d/%d weights to NaN',dn_bad,up_bad));
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   307
end
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   308
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   309
%----------------------------------------------------------------------
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   310
% Plot Results of Editing
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   311
%----------------------------------------------------------------------
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   312
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   313
bin_no = [0];
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   314
if length(d.zu) > 0, bin_no = [-length(d.zu):1 bin_no]; end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   315
if length(d.zd) > 0, bin_no = [bin_no 1:length(d.zd)]; end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   316
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   317
figure(14);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   318
clf;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   319
orient landscape;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   320
colormap([[1 1 1]; jet(128)]);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   321
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   322
subplot(2,1,1);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   323
imagesc(1:size(d.ts,2),bin_no,...
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   324
	[d.ts(1:length(d.zu),:); ...
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   325
	 ones(1,size(d.ts,2))*NaN; ...
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   326
	 d.ts(size(d.ts,1)-length(d.zd)+1:end,:)...
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   327
        ]);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   328
csc = caxis;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   329
xlabel('Ensemble #');
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   330
ylabel('Bin #');
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   331
title('Before Data Editing');
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   332
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   333
subplot(2,1,2);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   334
imagesc(1:size(d.ts,2),bin_no,...
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   335
	[d.ts_edited(1:length(d.zu),:); ...
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   336
	 ones(1,size(d.ts,2))*NaN; ...
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   337
	 d.ts_edited(size(d.ts,1)-length(d.zd)+1:end,:)...
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   338
        ]);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   339
csc = caxis;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   340
xlabel('Ensemble #');
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   341
ylabel('Bin #');
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   342
title('After Data Editing');
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   343
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   344
streamer([p.name,'  Figure 14']);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   345