edit_data.m
author A.M. Thurnherr <athurnherr@yahoo.com>
Mon, 23 Feb 2015 09:19:46 +0000
changeset 15 3746197831db
parent 11 d71acdec556a
child 17 f5a63c03d9c8
permissions -rw-r--r--
IX11beta for CLIVAR P16
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
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    22
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
%                    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
    25
%                    doc: Sat Jul  3 17:13:05 2004
15
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    26
%                    dlm: Fri Jan 23 21:40:14 2015
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    27
%                    (c) 2004 A.M. Thurnherr
15
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    28
%                    uE-Info: 93 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
    29
%======================================================================
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
% Initialize & Set Default Parameters
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    33
%----------------------------------------------------------------------
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
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
    36
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    37
% 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
    38
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
    39
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
    40
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    41
% 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
    42
% surface.
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    43
p=setdefv(p,'edit_sidelobes',1);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    44
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    45
% 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
    46
% 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
    47
% 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
    48
% 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
    49
% 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
    50
% 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
    51
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
    52
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    53
% 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
    54
% 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
    55
% 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
    56
% 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
    57
% 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
    58
% 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
    59
% 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
    60
% parameter depends on the instrument type.
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    61
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
    62
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    63
% 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
    64
% 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
    65
%     	   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
    66
%	   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
    67
p=setdefv(p,'edit_PPI',0);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    68
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    69
% 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
    70
% 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
    71
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
    72
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    73
% 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
    74
% 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
    75
% 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
    76
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
    77
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    78
% 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
    79
% 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
    80
% 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
    81
% 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
    82
% 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
    83
% 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
    84
% 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
    85
% [0 0 1 1].
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    86
p=setdefv(p,'edit_skip_ensembles',[]);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    87
15
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    88
% 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
    89
% 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
    90
% 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
    91
% 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
    92
% 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
    93
% merge in [loardrdi.m]
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    94
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    95
p=setdefv(p,'edit_dn_bad_ensembles',[]);
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    96
p=setdefv(p,'edit_up_bad_ensembles',[]);
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    97
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    98
%----------------------------------------------------------------------
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    99
% Bin Masking
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   100
%----------------------------------------------------------------------
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   101
15
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   102
if length(d.zu)>0 && p.blnk_u==0
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   103
  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
   104
  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
   105
end
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   106
if p.blnk_d==0
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   107
  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
   108
  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
   109
end
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   110
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   111
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
   112
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   113
  nbad = 0;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   114
  if length(d.zu) > 0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   115
    for bi=1:length(p.edit_mask_up_bins)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   116
      bn = length(d.zu)+1 - p.edit_mask_up_bins(bi);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   117
      nbad = nbad + length(find(isfinite(d.weight(bn,:))));
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   118
      d.weight(bn,:) = NaN; d.ts_edited(bn,:) = NaN;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   119
    end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   120
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   121
  if length(d.zd) > 0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   122
    for bi=1:length(p.edit_mask_dn_bins)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   123
      bn = length(d.zu) + p.edit_mask_dn_bins(bi);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   124
      nbad = nbad + length(find(isfinite(d.weight(bn,:))));
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   125
      d.weight(bn,:) = NaN; d.ts_edited(bn,:) = NaN;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   126
    end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   127
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   128
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   129
  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
   130
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   131
end % if bin masking enabled
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   132
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
% Side-Lobe Contamination
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
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   137
if p.edit_sidelobes
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
  nbad = 0;
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
  % 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
   142
  % 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
   143
  % 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
   144
  
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   145
  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
   146
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   147
    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
   148
      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
   149
		- 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
   150
    end
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   151
    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
   152
    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
   153
    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
   154
  
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   155
  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
   156
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   157
    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
   158
      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
   159
		- 0.015*d.up.Cell_length;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   160
    end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   161
    ibad = find(d.izm > zlim);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   162
    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
   163
    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
   164
  
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
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   167
  % 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
   168
  % -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
   169
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   170
  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
   171
    zlim(b,:) = -p.zbottom ...
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   172
	      + (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
   173
	      + 0.015*d.down.Cell_length;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   174
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   175
  ibad = find(d.izm < zlim);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   176
  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
   177
  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
   178
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   179
  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
   180
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   181
end %if p.edit_sidelobes
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   182
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
% Time-Domain Spike Filter
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
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   187
if p.edit_spike_filter
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
  nbad = 0;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   190
  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
   191
    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
   192
    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
   193
    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
   194
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   195
  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
   196
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   197
end %if p.edit_spike_filter
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   198
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   199
%----------------------------------------------------------------------
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   200
% Previous-Ping Interference
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
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   203
if p.edit_PPI
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
  % 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
   206
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   207
  nbad = 0;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   208
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   209
  % 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
   210
  % 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
   211
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   212
  dt = diff(d.time_jul)*86400;
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
  % 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
   215
  % 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
   216
  % pings each with 1s between pings)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   217
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   218
  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
   219
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   220
  % 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
   221
  % 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
   222
  % as good.
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   223
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   224
  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
   225
    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
   226
    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
   227
    if ~isfinite(SS), SS = 1500; end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   228
  else
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   229
    SS = 1500;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   230
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   231
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   232
  % 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
   233
  % 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
   234
  % 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
   235
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   236
  %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
   237
  %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
   238
  %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
   239
  %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
   240
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   241
  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
   242
  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
   243
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   244
  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
   245
  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
   246
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   247
  % 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
   248
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   249
  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
   250
    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
   251
    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
   252
    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
   253
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   254
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   255
  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
   256
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   257
end %if p.edit_PPI
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   258
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
% Ensemble Skipping
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
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   263
if ~isempty(p.edit_skip_ensembles)
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
  nskipped = 0;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   266
  iskip = [];
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   267
  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
   268
    if p.edit_skip_ensembles(i)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   269
      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
   270
    end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   271
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   272
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   273
  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
   274
    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
   275
    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
   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
  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
   279
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   280
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
   281
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   282
%----------------------------------------------------------------------
15
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   283
% 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
   284
%----------------------------------------------------------------------
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   285
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   286
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
   287
  if ~isempty(p.edit_dn_bad_ensembles)
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   288
    dn_bad = 0; ibad = p.edit_dn_bad_ensembles;
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   289
    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
   290
      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
   291
      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
   292
    end
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   293
  end
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   294
  if ~isempty(p.edit_up_bad_ensembles)
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   295
    up_bad = 0; ibad = p.edit_up_bad_ensembles;
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   296
    for b=length(d.zu):-1:1
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   297
      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
   298
      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
   299
    end
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   300
  end
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   301
  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
   302
end
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   303
3746197831db IX11beta for CLIVAR P16
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   304
%----------------------------------------------------------------------
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   305
% Plot Results of Editing
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   306
%----------------------------------------------------------------------
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   307
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   308
bin_no = [0];
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   309
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
   310
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
   311
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   312
figure(14);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   313
clf;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   314
orient landscape;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   315
colormap([[1 1 1]; jet(128)]);
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
subplot(2,1,1);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   318
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
   319
	[d.ts(1:length(d.zu),:); ...
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   320
	 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
   321
	 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
   322
        ]);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   323
csc = caxis;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   324
xlabel('Ensemble #');
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   325
ylabel('Bin #');
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   326
title('Before Data Editing');
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
subplot(2,1,2);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   329
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
   330
	[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
   331
	 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
   332
	 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
   333
        ]);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   334
csc = caxis;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   335
xlabel('Ensemble #');
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   336
ylabel('Bin #');
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   337
title('After Data Editing');
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
streamer([p.name,'  Figure 14']);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   340