How to prevent complex solutions from lsqnonlin

1 Ansicht (letzte 30 Tage)
Kai Chung
Kai Chung am 18 Aug. 2015
Beantwortet: Walter Roberson am 18 Aug. 2015
I am trying to determine the parameter of an equation using lsqnonlin.
y = x.^a
Where x and y are input and output data, and a is the parameter to be solved for.
This is the part of my code:
Y_fn = @(apara) ((X_meas).^(apara(1))-Y_meas);
apara = lsqnonlin(Y_fn,init,LB,UB,Y_meas);
Running the script yields solutions for a such as -0.1771 + 1.1983i. How do I prevent obtaining complex solutions?
Thanks

Antworten (1)

Walter Roberson
Walter Roberson am 18 Aug. 2015
If any of your X_meas are negative then you are likely to get complex results unless you use a lower bound of 0 for apara. A negative value raised to a non-integral exponent using .^ is going to return a complex value.

Kategorien

Mehr zu App Building finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by