www.gusucode.com > 《图像配准技术及其Matlab编程实现》--源码程序 > 《图像配准技术及其Matlab编程实现》/match/sample/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]; [maxDiff,m]=max(Diff); d4=X3-X0; temp1=X3-X0; condition1=sum(temp1.*temp1); if Condition1<=e break end [X4,fX4,landa]=OneDimSearch(X0,d4,handles); X0=X4; temp2=X4-X3; Condition2=sum(temp2.*temp2); if Condition2<=e X3=X4; break; end temp3=sqrt((fX4-fX0)/(maxDiff+eps)); 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;