plotraw.m
changeset 0 0a450563f904
child 5 033a169071de
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plotraw.m	Tue Oct 20 16:23:49 2009 -0400
@@ -0,0 +1,255 @@
+function p=plotraw(d,p)
+% function p=plotraw(d,p)
+% plot some results
+%
+
+%======================================================================
+%                    P L O T R A W . M 
+%                    doc: Fri Jan  5 15:38:43 2007
+%                    dlm: Fri Jan  5 15:46:39 2007
+%                    (c) 2007 M. Visbeck with contribs from A. Thurnherr
+%                    uE-Info: 15 37 NIL 0 0 72 0 2 4 NIL ofnI
+%======================================================================
+
+% MODIFICATIONS BY ANT:
+%	Jan  5, 2007: - fixed checkbeam() as suggested by B. Huber
+
+pmax=200;
+orient tall
+
+if length(d.time_jul)>pmax
+ ii=fix(linspace(2,length(d.time_jul)-2,pmax));
+else
+ ii=1:length(d.time_jul);
+end
+
+clf
+subplot(411)
+z=-d.izm(:,1)+d.z(1);
+zz=[];
+rw=[];
+
+% find three beam solutions
+% a profile is considered 3-beam is half of the good data are 3-beam
+iz=fliplr(d.izu);
+n3bu=0;
+n3bd=0;
+if length(iz)>1
+ zz=[zz;-z(iz)];
+ rw=[rw;d.rw(iz,ii)+d.weight(iz,ii)*0];
+ % check for 3-beam solutions
+ iw=sum(~isnan(d.rw(iz,ii)));
+ ie=sum(~isnan(d.re(iz,ii)));
+ i3bu=find(iw>(2*ie));
+ n3bu=length(i3bu)/length(ii)*100;
+ rw=[rw;rw(1,:)*NaN];
+ zz=[zz;0];
+end
+iz=d.izd;
+if length(iz)>1
+ zz=[zz;-z(iz)];
+ rw=[rw;d.rw(iz,ii)+d.weight(iz,ii)*0];
+ % check for 3-beam solutions
+ iw=sum(~isnan(d.rw(iz,ii)));
+ ie=sum(~isnan(d.re(iz,ii)));
+ i3bd=find(iw>(2*ie));
+ n3bd=length(i3bd)/length(ii)*100;
+end
+
+% contour results
+col=jet(128);
+col=([[1 1 1]; col]);
+colormap(col)
+pcolorn(ii,zz,rw), shading flat
+hold on
+ax=axis;
+plot(ax(1:2),[0 0],'-k')
+axis(ax), colorbar('horiz')
+% mark 3-beam solutions
+if n3bu>10
+ l3b=NaN*ii;
+ l3b(i3bu)=ax(3);
+ plot(ii,l3b,'-r','linewidth',8)
+ text(mean(ax(1:2)),ax(4),['found ',int2str(n3bu),'% profiles 3 beam solutions'],...
+ 'VerticalAlignment','top','HorizontalAlignment','center','fontsize',14)
+end
+
+if n3bd>10
+ l3b=NaN*ii;
+ l3b(i3bd)=ax(4);
+ plot(ii,l3b,'-r','linewidth',8)
+ text(mean(ax(1:2)),ax(3),['found ',int2str(n3bd),'% profiles 3 beam solutions'],...
+ 'VerticalAlignment','bottom','HorizontalAlignment','center','fontsize',14)
+end
+
+ylabel('range [m]')
+xlabel('ensemble')
+if existf(p,'name')
+  streamer([p.name,' Figure 2']);
+end
+title(' W as function of bindepth and time')
+
+if existf(d,'tsd_m')
+ subplot(427)
+ plot(d.tsd_m(1:length(d.izd),:),-d.zd)
+ axis tight
+ ax=axis;
+ if existf(d,'tsu_m')
+  hold on
+  plot(d.tsu_m(1:length(d.izu),:),d.zu)
+  axis tight
+  ax=axis;
+  plot(ax(1:2),ax(1:2)*0,'-k')
+ end
+
+ t=d.tsd_m;
+ checkbeam(t,ax,1)
+
+ if existf(d,'tsu_m')
+  t=d.tsu_m;
+  checkbeam(t,ax,0)
+ end
+ axis(ax)
+ ylabel('distance [m]')
+ xlabel('echo amplidute [dB]')
+ title('Beam Performance')
+end
+
+if existf(d,'cmd_m')
+ subplot(428)
+ plot(d.cmd_m(1:length(d.izd),:),-d.zd)
+ axis tight
+ ax=axis;
+ [dum,dum,dum,x,y]=makebars(-d.zd,sum(isfinite(d.weight(d.izd,:))'));
+ hold on
+ fill(-y/max(y)*10,x,'r')
+
+ if existf(d,'cmu_m')
+  hold on
+  plot(d.cmu_m(1:length(d.izu),:),d.zu)
+  plot(ax(1:2),ax(1:2)*0,'-k')
+  [dum,dum,dum,x,y]=makebars(d.zu,sum(isfinite(d.weight(d.izu,:))'));
+  fill(-y/max(y)*10,x,'g')
+  axis tight
+  ax=axis;
+  for i=1:4
+   [dum,ir]=min(abs(d.cmu_m(1:length(d.izu),i)-max(d.cmu_m(1,:))*0.3));
+   text((0.12*i+0.27)*ax(2),ax(4),int2str(d.zu(ir)),'VerticalAlignment','top')
+   p.up_range(i)=d.zu(ir);
+  end
+  text(0.01*ax(2),ax(4),['#',int2str(p.up_sn),...
+         ' range:'],'VerticalAlignment','top')
+ end
+ ax(1)=-13; 
+
+ for i=1:4
+  [dum,ir]=min(abs(d.cmd_m(1:length(d.izd),i)-max(d.cmd_m(1,:))*0.3));
+  p.dn_range(i)=d.zd(ir);
+  text((0.12*i+0.27)*ax(2),ax(3),int2str(d.zd(ir)),'VerticalAlignment','bottom')
+ end
+ text(0.01*ax(2),ax(3),['#',int2str(p.down_sn),...
+         ' range:'],'VerticalAlignment','bottom')
+
+ axis(ax)
+ ylabel('distance [m]')
+ xlabel('correlation ')
+ title('Range of good data')
+  
+end
+
+if existf(d,'z')
+ subplot(813)
+ plot(d.z)
+ ylabel('depth')
+ ax=axis;
+ ax(3)=min(d.z*1.05);
+ ax(4)=0;
+ ax(2)=length(d.z);
+ axis(ax)
+end
+
+if existf(d,'tilt')
+ subplot(814)
+ plot(d.tilt(1,:))
+ ylabel('tilt [deg]')
+ ax=axis;
+ ax(2)=length(d.z);
+ ax(4)=30;
+ axis(ax)
+end
+
+if existf(d,'hdg')
+ subplot(815)
+ plot(d.hdg(1,:))
+ ylabel('heading [deg]')
+ ax=axis;
+ ax(4)=360;
+ ax(2)=length(d.z);
+ axis(ax)
+ set(gca,'YTick',[0 90 180 270 360])
+end
+
+if existf(d,'xmv')
+ subplot(816)
+ plot(d.xmv(1,:))
+ text(length(d.xmv)/2,mean(d.xmv(1,:)),[' mean: ',num2str(fix(p.xmv(1)*10)/10)])
+ ylabel('X-mit volt down')
+ xlabel('ensemble')
+ ax=axis;
+ ax(2)=length(d.z);
+ axis(ax)
+end
+
+%=============================================
+function checkbeam(t,ax,do)
+% check beam performance
+
+%%%bl=size(t,2); 
+bl = length(t);	%%% BH fix
+
+iend=fix(bl/2):bl;
+
+tax=mean(ax(1:2));
+if do
+ tay=ax(3);
+ tflag='bottom';
+else
+ tay=ax(4);
+ tflag='top';
+end
+
+for i=1:4;
+% first correct for source level
+ t(:,i)=t(:,i)-mean(t(:,i));
+% find noise level
+ tn(i)=medianan(t(iend,i),2);
+ s2n(i)=mean(t(1:2,i))-tn(i);
+end
+
+ifail=s2n<max(s2n)*0.5;
+ibad=~ifail & s2n<max(s2n)*0.65;
+iweak=~ifail & ~ibad & s2n<max(s2n)*0.8;
+for i=1:4;
+text(ax(1)+0.2*i*diff(ax(1:2)),tay,[int2str(s2n(i)./max(s2n)*100),'%'],...
+ 'VerticalAlignment',tflag)
+end
+
+if sum(ifail)>0
+ it=find(ifail==1);
+ text(tax,tay*0.5,[' beam ',int2str(it),' broken'],...
+ 'VerticalAlignment',tflag,'HorizontalAlignment','center','fontsize',18)
+end
+
+if sum(ibad)>0
+ it=find(ibad==1);
+ text(tax,tay*0.65,[' beam ',int2str(it),' bad'],...
+ 'VerticalAlignment',tflag,'HorizontalAlignment','center','fontsize',15)
+end
+
+if sum(iweak)>0
+ it=find(iweak==1);
+ text(tax,tay*0.8,[' beam ',int2str(it),' weak'],...
+ 'VerticalAlignment',tflag,'HorizontalAlignment','center','fontsize',12)
+end
+
+return