www.gusucode.com > peizhun配准matlab程序源码 > peizhun配准matlab程序源码/Powell.m
function [RegistrationParameters] = Powell(handles) e=0.1; X0=[-5 -3 -4]; D=[1 0 0; 0 1 0; 0 0 1]; while(1) d1=D(1,:); [X1,fX1]=OneDimSearch(X0,d1,handles); d2=D(2,:); [X2,fX2]=OneDimSearch(X1,d2,handles); d3=D(3,:); [X3,fX3]=OneDimSearch(X2,d3,handles); fX0=PV(X0(1),X0(2),-X0(3),handles); Diff=[fX1-fX0 fX2-fX1 fX3-fX2]; [masDiff,m]=max(Diff); d4=X3-X0; temp1=X3-X0; Conditon1=sum(temp1.*temp); if Conditon1<=e break end [X4,fX4,landa]=OneDimSearch(X0,d4,handles); X0=X4; temp2=X4-X3; Conditon2=sum(temp2.*tem2); if Conditon2<=e X3=X4; break end temp3=sqrt((fX4-fX0)/(maxDiff+eqs)); if(abs(landa)>temp3) D(4,:)=d4; for i=m:3 D(i,:)=D(i+1,:); end end end RegistrationParameters(1) = -X3(1); RegistrationParameters(2) = -X3(2); RegistrationParameters(3) = -X3(3); RegistrationParameters(4) = fX3;