How to prevent complex solutions from lsqnonlin

2 views (last 30 days)
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

Answers (1)

Walter Roberson
Walter Roberson on 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.

Categories

Find more on App Building in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!