
Problem with Nonlinear Least Squares fitting
조회 수: 8 (최근 30일)
이전 댓글 표시
I am trying to create a script that will fit some scientific data to the function
where a,b, and c are the fitting parameters. My problem is that the script does not seem to seek better parameters, but I can do the fitting in a different software. What is wrong with my code? My code is below, and I am very new to MatLab. Thank you.
x = A(389:401, 6);
y = A(389:401, 5);
axis([0 1010 0 1.6E-7])
% hold on
plot(x,y,'ro')
title('Data points')
% hold off
ft = fittype('(a/2)*(sin(b*pi/2)/(cosh(b*log(2*pi*x*c))+cos(b*pi/2)));');
fo = fitoptions('Method','NonlinearLeastSquares',...
'Lower',[-1,-1,-1],...
'Upper',[1,1,1],...
'StartPoint',[5e-7 0.63 9e-5]);
[f2,gof,output]=fit(x,y,ft,fo);
f2
gof.rsquare
figure
plot(f2,x,y)
댓글 수: 0
답변 (1개)
Sam Chak
2022년 6월 14일
편집: Torsten
2022년 6월 14일
I don't see anything technically wrong with code. Probably the choices of the lower and upper bounds are 'too vast'. Your data lies in this region?
axis([0 1010 0 1.6E-7])
Does your data look like these two curves?
x = linspace(-pi, pi, 3601);
y1 = (1/2)*(sin(1*pi/2)./(cosh(1*log(2*pi*x*1))+cos(1*pi/2)));
y2 = (-1/2)*(sin(-1*pi/2)./(cosh(-1*log(2*pi*x*-1))+cos(-1*pi/2)));
plot(x, [y1' y2'])

참고 항목
카테고리
Help Center 및 File Exchange에서 Linear and Nonlinear Regression에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!