gone gone gone gone

1 commentaire

Stephen23
Stephen23 le 3 Déc 2020
Original question by Sarah Garcon:
FMINCON error: Failure in initial objective function evaluation. FMINCON cannot continue.
I am trying to find the coordinates of the center of rotation as seen by the coordinate systems of the two sensors using a file (data1.mat) that includes the coordinates of the positions (rM3 and rM4, 3xN vectors, with N=1001 measurements for the components of x, y, and z of the sensor position vector) and orientations (R3 and R4, 3x3xN vectors, including the rotation matrices describing the orientation of the sensor frame as seen from the world frame) of two sensors placed on two rigid bodies subject to a rotation about a single point.
Below if what I tired and the error that i keep on getting
main code
function y = normcalc(x,rM3, R3, rM4, R4)
rs1 = rM3 + R3*x(1:3);
rs2 = rM4 + R4*x(4:6);
y = sum(norm(rs1-rs2));
end
from command window
>> load('data1.mat')
>> fun = @normcalc;
>> x0 = [0,0,0,0,0];
>> A = [];
>> b = [];
>> x = fmincon(fun,x0,A,b)
Not enough input arguments.
Error in normcalc (line 2)
rs1 = rM3 + R3*x(1:3);
Error in fmincon (line 546)
initVals.f = feval(funfcn{3},X,varargin{:});
Caused by:
Failure in initial objective function evaluation. FMINCON cannot continue.

Connectez-vous pour commenter.

Réponses (1)

Star Strider
Star Strider le 3 Déc 2020

0 votes

Try this instead:
x = fmincon(@(x)fun(x,rM3, R3, rM4, R4),x0,A,b)
I cannot run your code since I don’t have the file. I assume it otherwise works, and the calculations are correct.

2 commentaires

That operation is never going to work.
First,
R3*x(1:3)
needs to be replaced by:
bsxfun(@mtimes,R3,x(1:3))
that if ‘x’ is a row vector then produces a (3x3x1001) result because that is the size of ‘R3’, however if ‘x’ is a column vector, regardless of the order, the dimensions are incompatible and there is no result.
In any event, since ‘rM3’ is a (3x1001) matrix, those results are incompatible so the addition operation will fail.
You need to reconfigure whatever it is that you’re doing.
I will delete my Answer in a few hours.
Stephen23
Stephen23 le 3 Déc 2020
Original comment by Sarah Garcon:
Array dimensions must match for binary array op.
Error in normcalc (line 2)
rs1 = rM3 + R3.*x(1:3);
Error in @(x)fun(x,rM3,R3,rM4,R4)
Error in fmincon (line 546)
initVals.f = feval(funfcn{3},X,varargin{:});
Caused by:
Failure in initial objective function evaluation. FMINCON cannot continue.
I have also attached the file

Connectez-vous pour commenter.

Catégories

En savoir plus sur Entering Commands dans Centre d'aide et File Exchange

Tags

Commenté :

le 3 Déc 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by