function tripod_pca(az,ua,va,ub,vb) % % 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. 6, 2001 magcor = 19; rot = az+90-magcor; trot = az-magcor; % calc and plot tripod info sft = 1; % scale for tripod size feet = [1.62,60;1.62,180;1.62,300]; feetcol = {'G';'B';'R'}; advloc = [.38,270-26.4;.38,90+26.4]; advsn = {'231';'244'}; [fx,fy] = xycoord(sft*feet(:,1),feet(:,2)+trot); [ax,ay] = xycoord(sft*advloc(:,1),advloc(:,2)+trot); for iadv = 1:2, if(iadv == 2),ua=ub;,va=vb;end % process first set of data from adv A == sn 231 [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(iadv),v(1:step:length(v))+ay(iadv),'.k','markersize',1); set(h,'color',[.4 .4 .4]) hold on % write pca data ts = ['ADV ',sprintf('%s',advsn{iadv}),... '; Speed= ',sprintf('%5.2f',mspd),'; Direction= ',sprintf('%3.0f',mdir) ]; h = text(1,-.6-.6*(iadv-1),ts); ts = ['Major axis: Mag= ',sprintf('%4.2f',majr*2),'; Az= ',sprintf('%3.0f',majaz) ]; h = text(1,-.8-.6*(iadv-1),ts); ts = ['Minor axis: Mag= ',sprintf('%4.2f',minr*2),'; Az= ',sprintf('%3.0f',minaz) ]; h = text(1,-1-.6*(iadv-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(iadv),yyy+ay(iadv),'-c','linewidth',2); % draw major/minor axes h = plot( sf*x1+ax(iadv),sf*y1+ay(iadv),'-c', sf*x2+ax(iadv),sf*y2+ay(iadv),'-c','linewidth',2); % draw mean current h = plot( sf*[0;mu]+ax(iadv),sf*[0;mv]+ay(iadv),'-b','linewidth',3); end % 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'); for i=1:2, h = text(ax(i),ay(i)-.05,advsn{i}); set(h,'horizontalalignment','center'); set(h,'verticalalignment','top'); end axis([-2 2 -2 2]) axis('square')