I have an objective function : y = error_RT(Tx,Ty,theta,T1,T2) .The Tx,Ty,theta are the parameters to be solved , while the T1&T2 are constants calculated by other programs. The GA needs a @fun(x), but I don't know how to pass the constants I know to the program.
Codeļ¼
x = ga(y,3,[],[],[],[],[0,-2,-2],[pi,2,2]);function y = error_RT(Tx,Ty,theta,T1,T2) T = [Tx;Ty];R = [cos(theta),sin(theta);-sin(theta),cos(theta)];[m,~] = size(T1);[n,] = size(T2);for i = 1:m T1(i,n)=(R*T1(i,n)'+T')';endTest1 = zeros(600,600);Test2 = zeros(600,600);for i = 1:m Test1(round(T1(i,1)*100),round(T1(i,2)*100)) = Test1(round(T1(i,1)*100),round(T1(i,2)*100)) + 1;endfor i = 1:n Test2(round(T2(i,1)*100),round(T2(i,2)*100)) = Test2(round(T2(i,1)*100),round(T2(i,2)*100)) + 1;end y = sum(sum((Test1-Test2).^2));end
Best Answer