# Nonlinear regression using lsqcurvefit

4 views (last 30 days)
Jason Yee on 4 Jul 2022
Commented: Jason Yee on 6 Jul 2022
Here is my code, along with my error message.
T = V22050100Emat;
A = table2array(T);
f = A(389:402, 6);
y = A(389:402, 5);
% axis([0 1010 0 1.6E-7])
% hold on
plot(f,y,'ro')
title('Data points')
% hold off
F = @(x,f)(x(1)./2)*(sin(x(2).*pi/2)./(cosh(x(2).*log(2*pi*f*x(3).).)+cos(x(2).*pi/2)));
x0 = [1e-6 0.16 0.04];
size(f)
size(F)
[x,resnorm,~,exitflag,output] = lsqcurvefit(F,x0,f,y);
hold on
plot(f,F(x,f))
hold off
My error message
Error using lsqcurvefit
Function value and YDATA sizes are not equal.
Error in nonlinfit (line 20)
[x,resnorm,~,exitflag,output] = lsqcurvefit(F,x0,f,y);
I have also tried the 'fit' function with mixed results. Thank you.

Torsten on 4 Jul 2022
Edited: Torsten on 4 Jul 2022
F = @(x,f) x(1)/2 * sin(x(2)*pi/2)./(cosh(x(2)*log(2*pi*f*x(3)))+cos(x(2)*pi/2));
F = @(x,f)(x(1)./2)*(sin(x(2).*pi/2)./(cosh(x(2).*log(2*pi*f*x(3).).)+cos(x(2).*pi/2)));
What do you get if you type
size(f)
size(y)
?
Does f and/or y have Inf or NaN values ?
Jason Yee on 6 Jul 2022
Thank you. This has solved my problem.

R2022a

### Community Treasure Hunt

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

Start Hunting!

Translated by