geterr.m
changeset 2 ec6b10ba8a34
parent 0 0a450563f904
child 15 3746197831db
equal deleted inserted replaced
1:ea3f25d9ba76 2:ec6b10ba8a34
     1 %======================================================================
     1 %======================================================================
     2 %                    G E T E R R . M 
     2 %                    G E T E R R . M 
     3 %                    doc: Wed Jun 30 23:24:51 2004
     3 %                    doc: Wed Jun 30 23:24:51 2004
     4 %                    dlm: Fri Mar  5 15:48:05 2010
     4 %                    dlm: Wed Jul  6 20:26:14 2011
     5 %                    (c) 2004 ladcp@
     5 %                    (c) 2004 ladcp@
     6 %                    uE-Info: 91 17 NIL 0 0 72 2 2 8 NIL ofnI
     6 %                    uE-Info: 19 35 NIL 0 0 72 2 2 8 NIL ofnI
     7 %======================================================================
     7 %======================================================================
     8 
     8 
     9 % MODIFICATIONS BY ANT:
     9 % MODIFICATIONS BY ANT:
    10 %  Jun 30, 2004: - BUG: bin numbering was wrong for asymmetric up/down
    10 %  Jun 30, 2004: - BUG: bin numbering was wrong for asymmetric up/down
    11 %	                bin setup
    11 %	                bin setup
    12 %  Jul  5, 2004: - added comments to debug depth mapping
    12 %  Jul  5, 2004: - added comments to debug depth mapping
    13 %  Jul 16, 2004: - added global variable skip_figure_3 to workaround
    13 %  Jul 16, 2004: - added global variable skip_figure_3 to workaround
    14 %		   linux matlab bug
    14 %		   linux matlab bug
    15 %  Oct  7, 2008: - extensively modified procfig 3 for version IX_6
    15 %  Oct  7, 2008: - extensively modified procfig 3 for version IX_6
    16 
    16 %  Jun 29, 2011: - removed skp_figure_3
    17 function l=geterr(dr,d,iplot)
    17 %		 - added ps.fig3_colormap, ps.fig3_err_y_axis, ps.fig3_avgerr
       
    18 %  Jun 30, 2011: - fixed fig.3 middle column plot title for median plot
       
    19 %  Jul  6, 2001: - fixed plot title
       
    20 
       
    21 function l=geterr(ps,dr,d,iplot)
    18 % function l=geterr(dr,d,iplot)
    22 % function l=geterr(dr,d,iplot)
    19 % returns predicitons of U_ocean and
    23 % returns predicitons of U_ocean and
    20 % U_ctd on the raw data grid
    24 % U_ctd on the raw data grid
    21 % 
    25 % 
    22 % CTD velocity
    26 % CTD velocity
    23 if nargin<3, iplot=1; end
    27 if nargin<4, iplot=1; end
       
    28 
       
    29 ps=setdefv(ps,'fig3_colormap',2);	% 1: jet	2: polar
       
    30 ps=setdefv(ps,'fig3_err_y_axis',2);	% 1: bin#	2: depth
       
    31 ps=setdefv(ps,'fig3_avgerr',2');	% 1: mean	2: median 
    24 
    32 
    25 tim=dr.tim;
    33 tim=dr.tim;
    26 tim(1)=-1e30;
    34 tim(1)=-1e30;
    27 tim(end)=1e30;
    35 tim(end)=1e30;
    28 
    36 
   100  disp([' sorry dz not constant loop ',int2str(length(ii)),' elements'])
   108  disp([' sorry dz not constant loop ',int2str(length(ii)),' elements'])
   101  for j=1:length(ii)
   109  for j=1:length(ii)
   102   iiz=ceil(iz(ii(j)));
   110   iiz=ceil(iz(ii(j)));
   103   iit=itm(ii(j));
   111   iit=itm(ii(j));
   104   l.u_oce(iiz,iit)=d.ru(ii(j))-l.ru_ctd(ii(j));
   112   l.u_oce(iiz,iit)=d.ru(ii(j))-l.ru_ctd(ii(j));
       
   113   l.u_err(iiz,iit)=d.ru(ii(j))-l.ru_oce(ii(j))-l.ru_ctd(ii(j));
   105   l.v_oce(iiz,iit)=d.rv(ii(j))-l.rv_ctd(ii(j));
   114   l.v_oce(iiz,iit)=d.rv(ii(j))-l.rv_ctd(ii(j));
       
   115   l.v_err(iiz,iit)=d.rv(ii(j))-l.rv_oce(ii(j))-l.rv_ctd(ii(j));
   106   l.w_oce(iiz,iit)=d.rw(ii(j))-l.rw_ctd(ii(j));
   116   l.w_oce(iiz,iit)=d.rw(ii(j))-l.rw_ctd(ii(j));
   107   l.w_oce_z(iiz,iit)=d.rw(ii(j))-l.rw_ctd_z(ii(j));
   117   l.w_oce_z(iiz,iit)=d.rw(ii(j))-l.rw_ctd_z(ii(j));
   108   if existf(l,'rw_ctd_p')
   118   if existf(l,'rw_ctd_p')
   109    l.w_oce_p(iiz,iit)=d.rw(ii(j))-l.rw_ctd_p(ii(j));
   119    l.w_oce_p(iiz,iit)=d.rw(ii(j))-l.rw_ctd_p(ii(j));
   110   end
   120   end
   118   l.u_adcp(iiz,iit)=d.ru(ii(j));
   128   l.u_adcp(iiz,iit)=d.ru(ii(j));
   119   l.v_adcp(iiz,iit)=d.rv(ii(j));
   129   l.v_adcp(iiz,iit)=d.rv(ii(j));
   120  end
   130  end
   121 else % uplooker and downlooker bin sizes are equal
   131 else % uplooker and downlooker bin sizes are equal
   122  l.u_oce=full(sparse(ceil(iz(ii)),itm(ii),d.ru(ii)-l.ru_ctd(ii)));
   132  l.u_oce=full(sparse(ceil(iz(ii)),itm(ii),d.ru(ii)-l.ru_ctd(ii)));
       
   133  l.u_err=full(sparse(ceil(iz(ii)),itm(ii),d.ru(ii)-l.ru_oce(ii)-l.ru_ctd(ii)));
   123  l.v_oce=full(sparse(ceil(iz(ii)),itm(ii),d.rv(ii)-l.rv_ctd(ii)));
   134  l.v_oce=full(sparse(ceil(iz(ii)),itm(ii),d.rv(ii)-l.rv_ctd(ii)));
       
   135  l.v_err=full(sparse(ceil(iz(ii)),itm(ii),d.rv(ii)-l.rv_oce(ii)-l.rv_ctd(ii)));
   124  l.w_oce=full(sparse(ceil(iz(ii)),itm(ii),d.rw(ii)-l.rw_ctd(ii)));
   136  l.w_oce=full(sparse(ceil(iz(ii)),itm(ii),d.rw(ii)-l.rw_ctd(ii)));
   125  l.w_oce_z=full(sparse(ceil(iz(ii)),itm(ii),d.rw(ii)-l.rw_ctd_z(ii)));
   137  l.w_oce_z=full(sparse(ceil(iz(ii)),itm(ii),d.rw(ii)-l.rw_ctd_z(ii)));
   126  if existf(l,'rw_ctd_p')
   138  if existf(l,'rw_ctd_p')
   127   l.w_oce_p=full(sparse(ceil(iz(ii)),itm(ii),d.rw(ii)-l.rw_ctd_p(ii)));
   139   l.w_oce_p=full(sparse(ceil(iz(ii)),itm(ii),d.rw(ii)-l.rw_ctd_p(ii)));
   128  end
   140  end
   175 % blank out shallow/deep estimates
   187 % blank out shallow/deep estimates
   176 ii=find(iz<0 | iz>max(dr.z)/dz);
   188 ii=find(iz<0 | iz>max(dr.z)/dz);
   177 d.ru(ii)=nan;
   189 d.ru(ii)=nan;
   178 d.rv(ii)=nan;
   190 d.rv(ii)=nan;
   179 
   191 
   180 global skip_figure_3;
       
   181 if isempty(skip_figure_3)
       
   182 
       
   183    figure(3)
   192    figure(3)
   184    clf
   193    clf
   185    orient landscape
   194    orient landscape
   186    
   195    
   187    colormap(polarmap(21));
   196 
   188    
   197    if ps.fig3_colormap == 2
   189    subplot(231)
   198      colormap(polarmap(21));
       
   199    else
       
   200      col=jet(128);
       
   201      col=([[1 1 1]; col]);
       
   202      colormap(col)
       
   203    end
       
   204 
   190    ib=1:size(l.ru_err,1);
   205    ib=1:size(l.ru_err,1);
   191    ib=ib-length(d.izu);
   206    ib=ib-length(d.izu);
   192    tmp = l.ru_err; tmp(isnan(tmp)) = 0;
   207 
   193    pcolorn(l.itv2,-ib,tmp), shading flat
   208    subplot(231)
       
   209    if ps.fig3_err_y_axis == 2
       
   210      if ps.fig3_colormap == 2
       
   211        tmp = l.u_err; tmp(isnan(tmp)) = 0;
       
   212        pcolorn(l.itv,-l.z_oce,tmp), shading flat
       
   213      else
       
   214        pcolorn(l.itv,-l.z_oce,l.u_err), shading flat
       
   215      end
       
   216      ylabel('Depth [m]');
       
   217    else
       
   218      if ps.fig3_colormap == 2
       
   219        tmp = l.ru_err; tmp(isnan(tmp)) = 0;
       
   220        pcolorn(l.itv2,-ib,tmp), shading flat
       
   221      else
       
   222        pcolorn(l.itv2,-ib,l.ru_err), shading flat
       
   223      end
       
   224      ylabel('Bin #');
       
   225    end
   194    fac=meannan(l.u_oce_s);
   226    fac=meannan(l.u_oce_s);
   195    fac=max([fac,1e-2]);
   227    fac=max([fac,1e-2]);
   196    caxis([-3 3]*fac)
   228    caxis([-3 3]*fac)
   197    colorbar
   229    colorbar
   198    xlabel('Super Ensemble #');
   230    xlabel('Super Ensemble #');
   199    ylabel('Bin #');
       
   200    title(sprintf('U-err std: %.03f',meannan(stdnan(l.ru_err'))))
   231    title(sprintf('U-err std: %.03f',meannan(stdnan(l.ru_err'))))
   201    
   232    
   202    subplot(232)
   233    subplot(232)
   203    plot(meannan(l.ru_err')',-ib)
   234    if ps.fig3_avgerr == 2
       
   235      plot(medianan(l.ru_err')',-ib)
       
   236      title('median(U-err)')
       
   237    else
       
   238      plot(meannan(l.ru_err')',-ib)
       
   239      title('mean(U-err)')
       
   240    end
   204    set(gca,'XLim',[-0.05 0.05]);
   241    set(gca,'XLim',[-0.05 0.05]);
   205    set(gca,'Ylim',[-ib(end) -ib(1)]);
   242    set(gca,'Ylim',[-ib(end) -ib(1)]);
   206    set(gca,'Xtick',[-0.04:0.02:0.04]);
   243    set(gca,'Xtick',[-0.04:0.02:0.04]);
   207    grid
   244    grid
   208    xlabel('Residual [m/s]');
   245    xlabel('Residual [m/s]');
   209    ylabel('Bin #');
   246    ylabel('Bin #');
   210    title('mean(U-err)')
       
   211    
   247    
   212    subplot(233)
   248    subplot(233)
   213    tmp = l.u_oce; tmp(isnan(tmp)) = 0;
   249    if ps.fig3_colormap == 2
   214    pcolorn(l.itv,-l.z_oce,tmp), shading flat
   250      tmp = l.u_oce; tmp(isnan(tmp)) = 0;
       
   251      pcolorn(l.itv,-l.z_oce,tmp), shading flat
       
   252    else
       
   253      pcolorn(l.itv,-l.z_oce,l.u_oce), shading flat
       
   254    end
   215    ca = caxis;
   255    ca = caxis;
   216    if abs(ca(1)) > abs(ca(2))
   256    if abs(ca(1)) > abs(ca(2))
   217     caxis([-abs(ca(1)) abs(ca(1))]);
   257     caxis([-abs(ca(1)) abs(ca(1))]);
   218    else 
   258    else 
   219     caxis([-abs(ca(2)) abs(ca(2))]);
   259     caxis([-abs(ca(2)) abs(ca(2))]);
   229    xlabel('Ensemble #');
   269    xlabel('Ensemble #');
   230    ylabel('Depth [m]');
   270    ylabel('Depth [m]');
   231    title('U_{oce}')
   271    title('U_{oce}')
   232    
   272    
   233    subplot(234)
   273    subplot(234)
   234    tmp = l.rv_err; tmp(isnan(tmp)) = 0;
   274    if ps.fig3_err_y_axis == 2
   235    pcolorn(l.itv2,-ib,tmp), shading flat
   275      if ps.fig3_colormap == 2
       
   276        tmp = l.v_err; tmp(isnan(tmp)) = 0;
       
   277        pcolorn(l.itv,-l.z_oce,tmp), shading flat
       
   278      else
       
   279        pcolorn(l.itv,-l.z_oce,l.v_err), shading flat
       
   280      end
       
   281      ylabel('Depth [m]');
       
   282    else
       
   283      if ps.fig3_colormap == 2
       
   284        tmp = l.rv_err; tmp(isnan(tmp)) = 0;
       
   285        pcolorn(l.itv2,-ib,tmp), shading flat
       
   286      else
       
   287        pcolorn(l.itv2,-ib,l.rv_err), shading flat
       
   288      end
       
   289      ylabel('Bin #');
       
   290    end
   236    fac=meannan(l.v_oce_s);
   291    fac=meannan(l.v_oce_s);
   237    fac=max([fac,1e-2]);
   292    fac=max([fac,1e-2]);
   238    caxis([-3 3]*fac)
   293    caxis([-3 3]*fac)
   239    colorbar
   294    colorbar
   240    xlabel('Super Ensemble #');
   295    xlabel('Super Ensemble #');
   241    ylabel('Bin #');
   296    ylabel('Bin #');
   242    title(sprintf('V-err std: %.03f',meannan(stdnan(l.rv_err'))))
   297    title(sprintf('V-err std: %.03f',meannan(stdnan(l.rv_err'))))
   243    
   298    
   244    subplot(235)
   299    subplot(235)
   245    plot(meannan(l.rv_err')',-ib)
   300    if ps.fig3_avgerr == 2
       
   301      plot(medianan(l.rv_err')',-ib)
       
   302      title('median(V-err)')
       
   303    else
       
   304      plot(meannan(l.rv_err')',-ib)
       
   305      title('mean(V-err)')
       
   306    end
   246    set(gca,'XLim',[-0.05 0.05]);
   307    set(gca,'XLim',[-0.05 0.05]);
   247    set(gca,'Ylim',[-ib(end) -ib(1)]);
   308    set(gca,'Ylim',[-ib(end) -ib(1)]);
   248    set(gca,'Xtick',[-0.04:0.02:0.04]);
   309    set(gca,'Xtick',[-0.04:0.02:0.04]);
   249    grid
   310    grid
   250    xlabel('Residual [m/s]');
   311    xlabel('Residual [m/s]');
   251    ylabel('Bin #');
   312    ylabel('Bin #');
   252    title('mean(V-err)')
       
   253 
   313 
   254    subplot(236)
   314    subplot(236)
   255    tmp = l.v_oce; tmp(isnan(tmp)) = 0;
   315    if ps.fig3_colormap == 2
   256    pcolorn(l.itv,-l.z_oce,tmp), shading flat
   316      tmp = l.v_oce; tmp(isnan(tmp)) = 0;
       
   317      pcolorn(l.itv,-l.z_oce,tmp), shading flat
       
   318    else
       
   319      pcolorn(l.itv,-l.z_oce,l.v_oce), shading flat
       
   320    end
   257    ca = caxis;
   321    ca = caxis;
   258    if abs(ca(1)) > abs(ca(2))
   322    if abs(ca(1)) > abs(ca(2))
   259     caxis([-abs(ca(1)) abs(ca(1))]);
   323     caxis([-abs(ca(1)) abs(ca(1))]);
   260    else 
   324    else 
   261     caxis([-abs(ca(2)) abs(ca(2))]);
   325     caxis([-abs(ca(2)) abs(ca(2))]);
   268     axis(ax);
   332     axis(ax);
   269    end
   333    end
   270    colorbar
   334    colorbar
   271    xlabel('Ensemble #');
   335    xlabel('Ensemble #');
   272    ylabel('Depth [m]');
   336    ylabel('Depth [m]');
   273    title('U_{oce}')
   337    title('V_{oce}')
   274    
   338    
   275    streamer([dr.name,'  Figure 3']);
   339    streamer([dr.name,'  Figure 3']);
   276 end % of ~skip_figure_3
       
   277 
   340 
   278 % reset colormap
   341 % reset colormap
   279 figure(11)
   342 figure(11)
   280 colormap(jet(128))
   343 colormap(jet(128))
   281 
   344