Error using lsqcurvefit: Function value and YDATA sizes are not equal.
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Max De Chastelain
am 4 Apr. 2021
Beantwortet: Matt J
am 4 Apr. 2021
I am trying to use the lsqcurvefit function to fit a sine wave to a data set, however i get the following error:
Function value and YDATA sizes are not equal.
when running the following code:
A = 0.3;
omega = 1;
phi = 0.1;
c = 0.1;
constants = [A omega phi c];
fun = @(timearray,constants) A .* (sin((timearray .* omega) + phi)) + c;
fittedconstants = lsqcurvefit(fun,constants,timearray,anglearray);
plot(timearray,fun(timearray,fittedconstants));
The array "timearray" is a 1x10001 double, defined by:
timearray = 0:0.01:100;
and the "anglearray" is also a 1x1001 double, filled with experimental data.
I feel as if it may be due to the mathematical operators used in my function, I have tried removing the "." before the "*" but this doesn't seem to work. placing a "." before and after the "sin" operator yields more errors.
Cheers in advance, I hope the information given is enough for a solution.
Akzeptierte Antwort
Matt J
am 4 Apr. 2021
A = 0.3;
omega = 1;
phi = 0.1;
c = 0.1;
initialGuess = [A omega phi c];
fun = @(x,timearray) x(1) .* (sin((timearray .* x(2)) + x(3))) + x(4);
fittedconstants = lsqcurvefit(fun,initialGuess,timearray(:).',anglearray(:).');
plot(timearray,fun(fittedconstants, timearray));
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Linear Least Squares 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!