필터 지우기
필터 지우기

calling exponential function to non linear square

조회 수: 2 (최근 30일)
Zahra Safari
Zahra Safari 2020년 9월 13일
댓글: Zahra Safari 2020년 9월 14일
I want to fit data to an exponential function with the nonlinear least squares method, but MATLAB gives an error.
The code that I've written :
clear;
clc;
close all;
%mix code: ref_concrete_T8
tdata = ...
[1.2560 2.7203 6.0830 10.0306 20.0960 40.9837 80.0923 ];
sdata = ...
[1.3000 7.2567 23.0167 30.2733 31.9400 43.0667 43.4850 ];
%fun=x1*exp(-(x2/tdata)^x3)
fun = @(x)x(1)*exp(-(x(2)./tdata)^x(3))-sdata;
x0=[40,0.9,0.1];
options = optimoptions(@lsqnonlin,'Algorithm','trust-region-reflective');
x = lsqnonlin(fun,x0)
plot(tdata,sdata,'ko')
hold on
tlist = linspace(tdata(1),tdata(end));
plot(tlist,x(1)*exp(-(x(2)./tdata)^x(3)),'b-')
xlabel time(day)
ylabel strength(MPa)
title('exponential Fit to Data ref conc T8')
legend('Data','exponential Fit')
hold off
  댓글 수: 2
Samiu Haque
Samiu Haque 2020년 9월 13일
In your function you can't raise a matrix to a power. The only thing that is possible is to raise the power of each element in the matrix and for that the line should be
fun = @(x)x(1)*exp(-(x(2)./tdata).^x(3))-sdata;
Image Analyst
Image Analyst 2020년 9월 13일
Can you put this down in the answer section Samiu? You can even get credit for it down there. Thanks in advance.

댓글을 달려면 로그인하십시오.

채택된 답변

Samiu Haque
Samiu Haque 2020년 9월 13일
In your function you can't raise a matrix to a power. The only thing that is possible is to raise the power of each element in the matrix and for that the line should be
fun = @(x)x(1)*exp(-(x(2)./tdata).^x(3))-sdata;
  댓글 수: 5
Samiu Haque
Samiu Haque 2020년 9월 13일
Use the following portion to solve the problem
syms tlist
y = x(1)*exp(-(x(2)./tlist).^x(3));
tlist = linspace(tdata(1),tdata(end));
y = subs(y);
plot(tlist,y,'b-')
Zahra Safari
Zahra Safari 2020년 9월 14일
thank you.
how can i calculate the value of R-squared??

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Solver-Based Nonlinear Optimization에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by