MATLAB实例:非线性曲线拟合
MATLAB实例:非线性曲线拟合
作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/
用最小二乘法拟合非线性曲线,给出两种方法:(1)指定非线性函数,(2)用傅里叶函数拟合曲线
1. MATLAB程序
clear
clc
xdata=[0.1732;0.1775;0.1819;0.1862;0.1905;0.1949;0.1992;0.2035;0.2079;0.2122;0.2165;0.2208;0.2252;0.2295;0.2338;0.2384];
ydata=[-3.41709;-4.90887;-6.09424;-6.95362;-7.63729;-8.12466;-8.37153;-8.55049;-8.61958;-8.65326;-8.60021;-8.52824;-8.43502;-8.32234;-8.20419;-8.04472];
%% 指定非线性函数拟合曲线
X0=[1 1];
[parameter,resnorm]=lsqcurvefit(@fun,X0,xdata,ydata); %指定拟合曲线
A=parameter(1);
B=parameter(2);
fprintf('拟合曲线Lennard-Jones势函数的参数A为:%.8f,B为:%.8f', A, B);
fit_y=fun(parameter,xdata);
figure(1)
plot(xdata,ydata,'r.')
hold on
plot(xdata,fit_y,'b-')
xlabel('r/nm');
ylabel('Fe-C Ec/eV');
xlim([0.17 0.24]);
legend('观测数据点','拟合曲线')
% legend('boxoff')
saveas(gcf,sprintf('Lennard-Jones.jpg'),'bmp');
% print(gcf,'-dpng','Lennard-Jones.png');
%% 用傅里叶函数拟合曲线
figure(2)
[fit_fourier,gof]=fit(xdata,ydata,'Fourier2')
plot(fit_fourier,xdata,ydata)
xlabel('r/nm');
ylabel('Fe-C Ec/eV');
xlim([0.17 0.24]);
saveas(gcf,sprintf('demo_Fourier.jpg'),'bmp');
% print(gcf,'-dpng','demo_Fourier.png');
function f=fun(X,r)
f=X(1)./(r.^12)-X(2)./(r.^6);
2. 结果
拟合曲线Lennard-Jones势函数的参数A为:0.00000003,B为:0.00103726
fit_fourier = General model Fourier2:
fit_fourier(x) = a0 + a1*cos(x*w) + b1*sin(x*w) +
a2*cos(2*x*w) + b2*sin(2*x*w)
Coefficients (with 95% confidence bounds):
a0 = 79.74 (-155, 314.5)
a1 = 112.9 (-262.1, 487.9)
b1 = 28.32 (-187.9, 244.6)
a2 = 24.5 (-114.9, 163.9)
b2 = 13.99 (-75.89, 103.9)
w = 15.05 (3.19, 26.9) gof = 包含以下字段的 struct: sse: 0.0024
rsquare: 0.9999
dfe: 10
adjrsquare: 0.9999
rmse: 0.0154

Fig 1. Lennard-Jones势函数拟合曲线

Fig 2. 傅里叶函数拟合曲线
MATLAB实例:非线性曲线拟合的更多相关文章
- MATLAB实例:多元函数拟合(线性与非线性)
MATLAB实例:多元函数拟合(线性与非线性) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 更多请看:随笔分类 - MATLAB作图 之前写过一篇博 ...
- MATLAB实例:聚类初始化方法与数据归一化方法
MATLAB实例:聚类初始化方法与数据归一化方法 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. 聚类初始化方法:init_methods.m f ...
- MATLAB实例:新建文件夹,保存.mat文件并保存数据到.txt文件中
MATLAB实例:新建文件夹,保存.mat文件并保存数据到.txt文件中 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 用MATLAB实现:指定路径下 ...
- MATLAB实例:求相关系数、绘制热图并找到强相关对
MATLAB实例:求相关系数.绘制热图并找到强相关对 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 用MATLAB编程,求给定数据不同维度之间的相关系 ...
- MATLAB实例:散点密度图
MATLAB实例:散点密度图 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ MATLAB绘制用颜色表示数据密度的散点图 数据来源:MATLAB中“fit ...
- MATLAB实例:绘制条形图
MATLAB实例:绘制条形图 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 用MATLAB绘制条形图,自定义条形图的颜色.图例位置.横坐标名称.显示条 ...
- MATLAB实例:绘制折线图
MATLAB实例:绘制折线图 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 条形图的绘制见:MATLAB实例:绘制条形图 用MATLAB将几组不同的数 ...
- MATLAB实例:将批量的图片保存为.mat文件
MATLAB实例:将批量的图片保存为.mat文件 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 一.彩色图片 图片数据:horse.rar 1. MA ...
- MATLAB实例:为匹配真实标签,对训练得到的标签进行调整
MATLAB实例:为匹配真实标签,对训练得到的标签进行调整 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. MATLAB程序 munkres.m ...
随机推荐
- sqlalchemy 执行原生sql语句
from contextlib import contextmanager from sqlalchemy import create_engine, ForeignKey from sqlalche ...
- Cross-Site Scripting:DOM 跨站点脚本:DOM
- C# Task 多任务 限制Task并发数量
LimitedTaskScheduler: using System; using System.Collections.Concurrent; using System.Collections.Ge ...
- MongoDB(三):数据库操作、集合操作
1. 数据库操作 看完前面的文章,大家应该把环境搭建好了,下面我们就开始学习MongoDB的一些基本操作了. 首先我们要了解的一些要点: MongoDB将数据存储为一个文档,数据结构由键值对(key= ...
- 微信小程序的入门
1.申请账号 官网:https://mp.weixin.qq.com/ 2.开发工具 为了帮助开发者简单和高效地开发和调试微信小程序,推出了小程序开发者工具,集成了公众号网页调试和 ...
- TSC打印机防重码在线检测系统
条码标签作为产品的一个身份标识,被应用得越来越普及,但随着使用量的增大,在打印条码流水号的过程中,偶尔会出现打印重复号码的标签出现,这样对产品生产及管理过程中会产生极大的混乱,会收到严重的客诉及返工, ...
- 45.QT-连接外部dll,lib库导入问题
dll库问题 查看MZ_Card.dll对应的文档手册,如下图所示: 所以代码写为: typedef BOOL (*Fun)(BOOL IsOpenComm,unsigned long Port, u ...
- JavaWeb 错误/异常时页面提示
经常我们会遇到发生页面404错误,服务器 500 异常,如果默认方式处理,则是将异常捕获之后跳到 Tomcat 缺省的异常页面,如下图所示.
- JS PopupAlert
JS PopupAlert 可以在 JavaScript 中创建三种消息框:警告框.确认框.提示框. 警告框 警告框经常用于确保用户可以得到某些信息. 当警告框出现后,用户需要点击确定按钮才能继续进行 ...
- 团队开发的代码管理(VS)
1.文档 代码需要一个文档说明代码的基本情况,使用的组件,代码逻辑层等等 2.源代码冲突(Git) 首先需要尽可能避免冲突,公共的工具基类尽可能不动,如果需要修改也交给专人修改不能谁都上去修改 项目按 ...