matlab代码---非线性拟合

本文详细介绍使用MATLAB进行曲线拟合的过程,包括正态分布和双指数衰减模型的参数优化。通过lsqcurvefit和nlinfit函数,实现对实验数据的有效拟合,并展示如何迭代调整初始参数以获得更佳的拟合结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

zt_nihe.m

x=1:1:12;
y=[0
0
0
1
0
3
10
12
8
2
1
2
]';
c0=[2 8];
for i=1:1000
    c=lsqcurvefit(@zhengtai,c0,x,y);
    c0=c;
end
y1=(1./(sqrt(2.*3.14).*c(1))).*exp(-(x-c(1)).^2./(2.*c(2)^2));
plot(x,y,'r-',x,y1);
legend('实验数据','拟合曲线')

zhengtai.m

function f=zhengtai(c,x)
f=(1./(sqrt(2.*3.14).*c(1))).*exp(-(x-c(1)).^2./(2.*c(2)^2));

在这里插入图片描述

nihe2.m

x=[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]';
y=[30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25 18 15 12 10 7 7 4]';
f=@(c,x)c(1)*(exp(-c(2)*x)-exp(-c(3)*x));
c0=[114 0.1 2]';
for i=1:50
opt=optimset('TolFun',1e-3);
[c R]=nlinfit(x,y,f,c0,opt)
c0=c;
hold on
plot(x,c(1)*(exp(-c(2)*x)-exp(-c(3)*x)),'g')
end

在这里插入图片描述

nihe1.m

t=[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];
y=[30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25 18 15 12 10 7 7 4];
c0=[1 1 1];
for i=1:50
    c=lsqcurvefit(@example1,c0,t,y);
    c0=c;
end
y1=c(1)*(exp(-c(2)*t)-exp(-c(3)*t));
plot(t,y,'+',t,y1);
legend('实验数据','拟合曲线')

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值