matlab 画非线性曲线,matlab 非线性曲线拟合, nlinfit & lsqcurvefit & lsqnonlin

%

matlab 非线性曲线拟合,polyfit & nlinfit &

lsqcurvefit & lsqnonlin;

%x0 初始向量

%p 表达式参数变量

xdata = [0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 5 6 7 8 9 10 11 12

13 14 15 16];

ydata = [30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25 18 15 12

10 7 7 4];

figure(1);plot(xdata,ydata,'o');

%%

%(1):

polyfit(xdata,ydata,n);

%(2):

f=inline('函数表达式','p','xdata');

p=nlinfit(xdata,ydata,f,x0);

%(3)

M-file;

function f=fun(p,xdata)

f=g(p,xdata)

end

p=lsqcurvefit('fun', x0, xdata, ydata)

%(4)

M-file;

function f=fun(p,xdata,ydata)

xdata=[];

ydata=[];

f=g(p,xdata)-ydata

end

p= lsqnonlin('fun', x0)

%%

%@@@@@@@

%(1):

f1=inline('p1(1)*(exp(-p1(2)*xdata)-exp(-p1(3)*xdata))','p1','xdata');

x0=[114 0.18 2.01];

p1=nlinfit(xdata,ydata,f1,x0);

figure(1);hold

on;plot(xdata,p1(1)*(exp(-p1(2)*xdata)-exp(-p1(3)*xdata)),'r');

%%(1):

p2=lsqcurvefit('fun1',x0, xdata, ydata) ;

figure(1);hold

on;plot(xdata,p2(1)*(exp(-p2(2)*xdata)-exp(-p2(3)*xdata)),'g')

%%(2):

p3=lsqnonlin('fun2',x0) ;

figure(1);hold

on;plot(xdata,p3(1)*(exp(-p3(2)*xdata)-exp(-p3(3)*xdata)),'m')

%%

%总结,效果基本一致;inlinfit对初值很敏感!

%@@@@@@

function f1=fun1(p2,xdata)

f1=p2(1)*(exp(-p2(2)*xdata)-exp(-p2(3)*xdata))

end

%@@@@@

function f=fun2(p3,xdata,ydata)

xdata = [0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 5 6 7 8 9 10 11 12

13 14 15 16];

ydata = [30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25 18 15 12

10 7 7 4];

f=p3(1)*(exp(-p3(2)*xdata)-exp(-p3(3)*xdata))-ydata

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值