Matlab学习手记——非线性数据拟合:nlinfit和lsqcurvefit

目的:通过一个实例了解Matlab的数据拟合函数nlinfit和lsqcurvefit的使用。

  • 结果图

    

  • 具体数值
p =
    0.3000   50.0000    0.4000  200.0000    0.3000  800.0000
p1 =
    0.3267   48.3589    0.4030  226.6525    0.2838  809.6680
p2 =
    0.3267   48.3646    0.4031  226.7359    0.2837  809.8132
  • 代码
clear;clc;
M = 1000;
Te = 20;
t = Te*(1:M)';
rng('default');  % 固定噪声
Et = 0.3*exp(-(t/50).^2)+0.4*exp(-t/200)+0.3*exp(-t/800) + 0.01 * randn(M, 1);
p0 = [0.5, 50, 0.5, 100, 0.5, 500];
f = @(p,t) p(1)*exp(-(t/p(2)).^2)+p(3)*exp(-t/p(4)) +p(5)*exp(-t/p(6));
p1 = nlinfit(t, Et, f, p0);
lb = [0, 1, 0, 100, 0, 500];
ub = [1, 100, 1, 500, 1, 1000];
p2 = lsqcurvefit(f, p0, t, Et, lb, ub);
plot(t, Et, 'k', t, f(p1, t), 'r', t, f(p2, t), 'b', 'linewidth', 2)
legend('Model', 'nlinfit', 'lsqcurvefit')

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值