dubo的个人博客分享 http://blog.sciencenet.cn/u/dubo

博文

采用MATLAB的lsqcurvefit函数进行非线性拟合

已有 51498 次阅读 2012-11-18 20:04 |个人分类:matlab|系统分类:科研笔记|关键词:学者| lsqcurvefit

示例文件下载:

采用MATLAB的lsqcurvefit函数进行非线性拟合.rar

 

1、首先编写fun.m文件

function [ f ] = fun( c,x )

%UNTITLED3 Summary of this function goes here

%   Detailed explanation goes here

f=1-8/9.8696.*exp(-9.8696.*c(1).*x/(c(2).^2));

end

 

2、然后编写data.m进行拟合

clc;clear;
 data=[0  0
1 27.33333333
2 37.46666667
3 48.5
4 57.6
5 66.53333333
6 74.43333333
8 85.33333333
10 91.1
12 95.5
14 96.53333333
17 97.3
20 97.93333333
24 98.33333333];
xdata=data(:,1);
ydata=data(:,2)./100;
c0=[1 1];
for i=1:100
c = lsqcurvefit ('fun', c0, xdata, ydata) ;
c0 = c; %以计算出的 c为初值进行迭代;
end
c
x=0:0.5:25;
y1=1-8/9.8696.*exp(-9.8696.*c(1).*x/(c(2).^2));
plot(xdata, ydata,'o',x,y1,'r');
legend ('实验数据 ','拟合曲线');

3、拟合结果

D= 0.0241    l=1.1436



https://m.sciencenet.cn/blog-464042-633789.html

上一篇:用Origin 做线性拟合
下一篇:C语言循环写入文件

1 杨正瓴

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-2 21:17

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部