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实例:非线性曲线拟合的更多相关文章

  1. MATLAB实例:多元函数拟合(线性与非线性)

    MATLAB实例:多元函数拟合(线性与非线性) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 更多请看:随笔分类 - MATLAB作图 之前写过一篇博 ...

  2. MATLAB实例:聚类初始化方法与数据归一化方法

    MATLAB实例:聚类初始化方法与数据归一化方法 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. 聚类初始化方法:init_methods.m f ...

  3. MATLAB实例:新建文件夹,保存.mat文件并保存数据到.txt文件中

    MATLAB实例:新建文件夹,保存.mat文件并保存数据到.txt文件中 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 用MATLAB实现:指定路径下 ...

  4. MATLAB实例:求相关系数、绘制热图并找到强相关对

    MATLAB实例:求相关系数.绘制热图并找到强相关对 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 用MATLAB编程,求给定数据不同维度之间的相关系 ...

  5. MATLAB实例:散点密度图

    MATLAB实例:散点密度图 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ MATLAB绘制用颜色表示数据密度的散点图 数据来源:MATLAB中“fit ...

  6. MATLAB实例:绘制条形图

    MATLAB实例:绘制条形图 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 用MATLAB绘制条形图,自定义条形图的颜色.图例位置.横坐标名称.显示条 ...

  7. MATLAB实例:绘制折线图

    MATLAB实例:绘制折线图 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 条形图的绘制见:MATLAB实例:绘制条形图 用MATLAB将几组不同的数 ...

  8. MATLAB实例:将批量的图片保存为.mat文件

    MATLAB实例:将批量的图片保存为.mat文件 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 一.彩色图片 图片数据:horse.rar 1. MA ...

  9. MATLAB实例:为匹配真实标签,对训练得到的标签进行调整

    MATLAB实例:为匹配真实标签,对训练得到的标签进行调整 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. MATLAB程序 munkres.m ...

随机推荐

  1. 从一个OutOfMemoryError 学会了分析Java内存泄漏问题

    以前都是好好的,最近出现了 oom. 问题 开始是: java.lang.OutOfMemoryError: Java heap space -- :: --- [nio--exec-] c.e.p. ...

  2. IT兄弟连 HTML5教程 在移动设备上设置原始大小显示

    在iPhone系列和iPod Touch中使用的是Safari浏览器,它支持前面介绍的媒体查询表达式.例如,使用iPhone 320px×480px的分辨率去访问我们前面的布局示例,却无法得到我们想看 ...

  3. Linux下设置mysql允许远程连接

    最近在Linux上安装了Mysql,然后在Windows环境下通过Navicat来连接时,出现报错:1045 Access denied for user 'root'@'XXX' (using pa ...

  4. 利用PyInstaller打包exe文件

    前言 平常我们通过Python写完一些小脚本之后,如果使用不频繁的话,一般会选择在DOS界面直接跑脚本,或者在IDE中运行.但当我们需要频繁使用某些脚本,或者在没有Python环境的机器上也能顺利运行 ...

  5. 通过requestAnimationFrame判断浏览器帧率

    /** ** 得到浏览器每秒帧数fps ** ** @Date Mar 13 2013 **/ var showFPS = (function(){ var requestAnimationFrame ...

  6. Mysql - 高可用方案之MMM(二)

    一.概述 上一篇博客中(https://www.cnblogs.com/ddzj01/p/11535796.html)介绍了如何搭建MMM架构,本文将通过实验介绍MMM架构的优缺点. 二.优点 1. ...

  7. Hyper-V “SP2019SER”无法更改状态。操作失败,错误代码为“32788”。

    卸载Hyper-V,然后重装,再重启已有的Hyper-V服务器,报错如下: 尝试启动选定的虚拟机时出错.“SP2019SER”无法更改状态. 原因:卸载后导致虚拟网卡出现问题导致的. 解决办法: 右击 ...

  8. 中小后台系统UI框架--EasyUI

    后台开发人员不擅长前端UI界面,而小型软件公司没有专职美工岗位,开发人员只能借助开源UI框架,复用已有组件,完成用户操作界面.EasyUI是基于jQuery的UI插件集合体,可帮助开发者轻松构建网页. ...

  9. Laravel-权限系统

    总结Auth中间件用于定义未登录用户只能操作哪些权限policy授权策略定义了当前用户实例与进行授权的用户是否匹配,一致才能进一步操作,否则返回403禁止访问异常场景:用户登录 Auth步骤 找到需要 ...

  10. 关于java中三种初始化块的执行顺序

    许多小伙伴对于java中的三种初始化块的执行顺序一直感到头疼,接下来我们就来分析一下这三种初始化块到底是怎么运行的.有些公司也会将这个问题作为笔试题目. 下面通过一段代码来看看创建对象时这么初始化块是 ...