lsqnonlin return a result optimized nothing
이전 댓글 표시
I am trying to implement a math algorithm as my final project for my CV class, which can be found here: paper
Simplify the problem is: Minimize

With constraint:

And I wrote a function for the lsqnonlin() to obtain the result:
if true
function F = myfun(x, m, n, u, v, std_u, std_v)
% x = pm1 - pm13, x1,y1,z1,t1 - xn,yn,zn,tn
% m: # of picture
% n: # of point
% u: 2D points u direction i, j
% v: 2D points v direction i, j
F = 0;
for row = 1:m
for column = 1:n
Xi = x(1, 11+3*(n-1)+1);
Yi = x(1, 11+3*(n-1)+2);
Zi = x(1, 11+3*(n-1)+3);
error1 = u(row, column)*( x(row, 9) * Xi + x(row, 10) * Yi + x(row, 11) * Zi + 1 ) - ( x(row, 1) * Xi + x(row, 2) * Yi + x(row, 3) * Zi + x(row, 4) );
error2 = v(row, column)*( x(row, 9) * Xi + x(row, 10) * Yi + x(row, 11) * Zi + 1 ) - ( x(row, 5) * Xi + x(row, 6) * Yi + x(row, 7) * Zi + x(row, 8) );
F = F +(error1)*(error1) / std_u*std_u + (error2) * (error2) / std_v * std_v;
end
for column = 1:n
Xi = x(1, 11+3*(n-1)+1);
Yi = x(1, 11+3*(n-1)+2);
Zi = x(1, 11+3*(n-1)+3);
error3 = Xi * Xi + Yi * Yi + Zi * Zi;
F = F + abs(error3);
end
end
end
end
Where x is a matrix
X = [p1_11 - p1_33 , x1, y1, z1, t1, ...., xn, yn, zn, tn p2_11 - p2_33 , 0 ... 0 ... pm_11 - pm_33 , 0 ... 0] As i have to combine two parameter into one in order to use lsqnonlin(@F,X,[],[],options, 2, 40, u, v, val1, val2)
However, the function returned my initialed guess.
If you have any idea why this would happen please let me know
댓글 수: 3
As clearly written in the documentation of "lsqnonlin", the functions g_k must be returned separately, not their cumulated sum of absolute values.
So in your case, F must be a vector of size 2*(2*m*n+n), not a single scalar.
Furthermore, your quadratic constraint on the parameters to be fitted shows that "lsqnonlin" is not the correct tool to use, but "fmincon".
Best wishes
Torsten.
junqi yang
2017년 5월 5일
junqi yang
2017년 5월 5일
답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Get Started with Optimization Toolbox에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!