function MIBtripod_pca(az,ua,va) % MIBtripod_pca - Draw MIB tripod, sonar footprints, and princ. comp. plot % MIBtripod_pca(az, ua, va) % az is MAGNETIC azimuth from adv compass (assumes mag corrn is 19 deg) % u and v are column vectors with x and y data % Chris Sherwood, USGS % Aug. 29, 2001 magcor = 19; rot = az-90+magcor; trot = az+magcor; % calc and plot tripod info sft = 1; % scale for tripod size % dimensions for aluminum tripods feet = [1.56,60;1.56,180;1.56,300]; feetcol = {'G';'B';'R'}; advloc = [.0,0]; advsn = 'B59'; % profile endpoints profx = [.25; .25]; profy = [.44+3; .44-3]; [profr,profaz]=pcoord(profx,profy); [profx,profy]=xycoord(sft*profr,profaz+trot); [fx,fy] = xycoord(sft*feet(:,1),feet(:,2)+trot); [ax,ay] = xycoord(sft*advloc(:,1),advloc(:,2)+trot); [fanx,fany] = xycoord(sft*.8,300+trot); % process ADVO data [as,adir]=pcoord(ua,va); as = as/100; adir = adir+rot; [u,v]=xycoord(as,adir); mu = mean(u); mv = mean(v); C = cov(u,v); [V,D] = eig(C); x1 = [.5*sqrt(D(1,1))*V(1,1);-.5*sqrt(D(1,1))*V(1,1)]; y1 = [.5*sqrt(D(1,1))*V(2,1);-.5*sqrt(D(1,1))*V(2,1)]; x2 = [.5*sqrt(D(2,2))*V(1,2);-.5*sqrt(D(2,2))*V(1,2)]; y2 = [.5*sqrt(D(2,2))*V(2,2);-.5*sqrt(D(2,2))*V(2,2)]; [mspd mdir]=pcoord( mu, mv ); [ majr, majaz ] = pcoord( x1(1), y1(1) ); [ minr, minaz ] = pcoord( x2(1), y2(1) ); if(majr < minr), ltemp = majr; aztemp = majaz; majr = minr; majaz = minaz; minr = ltemp; minaz = aztemp; end sd1 = 2*majr; sd2 = 2*minr; % plot data step = 1; h = plot(u(1:step:length(u))+ax,v(1:step:length(v))+ay,'.k','markersize',1); set(h,'color',[.4 .4 .4]) hold on % write pca data ts = ['ADV ',sprintf('%s',advsn),... '; Speed= ',sprintf('%5.2f',mspd),'; Direction= ',sprintf('%3.0f',mdir) ]; h = text(1,-.6,ts); ts = ['Major axis: Mag= ',sprintf('%4.2f',majr*2),'; Az= ',sprintf('%3.0f',majaz) ]; h = text(1,-.8,ts); ts = ['Minor axis: Mag= ',sprintf('%4.2f',minr*2),'; Az= ',sprintf('%3.0f',minaz) ]; h = text(1,-1,ts); sf = 10; % draw ellipse theta=2*pi*(1:64)/64; theta=[0 theta]; xx=majr*cos(theta); yy=minr*sin(theta); angle=-majaz*pi/180+pi/2; xxx=sf*(xx*cos(angle)-yy*sin(angle)); yyy=sf*(xx*sin(angle)+yy*cos(angle)); h = plot(xxx+ax,yyy+ay,'-c','linewidth',2); % draw major/minor axes h = plot( sf*x1+ax,sf*y1+ay,'-c', sf*x2+ax,sf*y2+ay,'-c','linewidth',2); % draw mean current h = plot( sf*[0;mu]+ax,sf*[0;mv]+ay,'-b','linewidth',3); % draw tripod plot([fx;fx(1)],[fy;fy(1)],'--k') hold on for i=1:3, h = text(fx(i),fy(i),feetcol{i}); set(h,'horizontalalignment','center'); end plot(ax,ay,'ok'); h = text(ax,ay-.05,advsn); set(h,'horizontalalignment','center'); set(h,'verticalalignment','top'); % sonar profile footprint h = plot( profx, profy, 'om'); h = plot( profx, profy, '-m'); set(h,'linewidth',3); % plot fan radii h = plot(fanx,fany,'om'); h = circle(1,fanx,fany,'--m'); h = circle(2,fanx,fany,'--m'); h = circle(3,fanx,fany,'--m'); axis([-2 2 -2 2]) axis('square')