Matlab 曲线拟合

摘要:
在matlab中,经常需要对数据进行曲线拟合,例如最常见的多项式拟合。通常,可以通过cftool调用曲线拟合工具。通过图形界面,执行曲线拟合非常方便,但有时使用图形工具并不方便。1多项式拟合Polyfit可以拟合数据,返回相应的参数,然后使用polyval生成拟合数据点。在下面的示例中,我们拟合抛物线y=3x2+6x+5。x=-5:0.1:5;y=3*x。^2+6*x+5+兰特;p=polyfit;yy=聚乙烯(p,x);情节坚持;在plotpolfit中,x表示自变量,y表示因变量,2表示用二次曲线(抛物线)拟合。获得的p实际上是相应的参数估计,yy是拟合数据点。

在matlab中经常需要对数据进行曲线拟合,如最常见的多项式拟合,一般可以通过cftool调用曲线拟合工具(curve fit tool),通过图形界面可以很方便的进行曲线拟合,但是有些时候也会遇到不方便用图形工具。因此这里简单的记下两种常用的拟合方法。 
1 多项式拟合(polyfit和polyval) 
polyfit可以对数据进行拟合(自定义用几次多项式),返回相应的参数,然后用polyval生成拟合后的数据点,下面的例子中我们对抛物线y=3x2+6x+5进行拟合。 
x = -5:0.1:5; 
y = 3*x.^2+6*x + 5 + randn(size(x)); 
p = polyfit(x,y,2); 
yy = polyval(p,x); 
plot(x,y,'.'); 
hold on; 
plot(x,yy,'r','LineWidth',2) 
polyfit(x,y,2)中x表示自变量,y表示因变量,2表示用二次曲线(抛物线)进行拟合,得到的p其实是对应的参数估计值,yy为拟合数据点。另外在实验中还加了一个随机噪声。 

2 高斯函数的曲线拟合 
高斯曲线也是很常要拟合的曲线,这里介绍一种直接用代码使用cftool拟合工具的方法,这种方法可以对许多自定义的函数进行拟合(例如用来做多项式拟合,但是这种方法要麻烦很多,远没有前一种方法多项式拟合方便)。下面的是一个简单的例子,其中还可以进行更复杂的设置,具体请help fit和fittype. 


f = fittype('a*exp(-((x-b)/c)^2)'); 
x = -10:0.2:10; 
y = 5*exp(-((x)/4).^2)+randn(size(x))*0.1; 
plot(x,y,'.') 
[cfun,gof] = fit(x(:),y(:),f); 
yy = cfun.a*exp(-((x-cfun.b)/cfun.c).^2); 
hold on;plot(x,yy,'r','LineWidth',2); 


此外,高斯曲线的拟合也可以通过转化为多项式拟合的方法实现,先将被拟合数据y取对数,然后用多项式拟合求出对应的参数。代码如下: 

x = -10:0.2:10; 
y = 5*exp(-((x)/4).^2); 
lny = log(y); 
p = polyfit(x,lny,2); 
gauss.c = sqrt(-1/p(1)); 
gauss.b = -p(2)/2/p(1); 
gauss.a = exp(p(3)-p(1)*gauss.b^2); 
yy = gauss.a*exp(-((x-gauss.b)/gauss.c).^2); 
plot(x,y,'.'); 
hold on; 
plot(x,yy,'r','LineWidth',2) 


但是这种方法似乎只在没有噪声干扰时效果较好,如果存在噪声的干扰的话,那么这个估计不是最佳的(因为对数运算使不同区间的噪声影响不同),右图为加了噪声之后的情况. 
                  

更多曲线拟合 Matlab源码:http://www.eyesourcecode.com/forum-Matlab-1.html 

免责声明:文章转载自《Matlab 曲线拟合》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ehcache 缓存正则匹配药品规格中的系数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

matlab怎么同时显示imshow 两幅图片

matlab怎么同时显示imshow 两幅图片 matlab怎么同时显示imshow 两幅图片 方法一:subplot()函数 subplot(2,1,1); subplot(2,1,2); 分上下或者左右显示两张图片... 例如: 原始图片分两个窗口显示: hehe=uint8(hehe); figure(1) imshow(he), title('原始...

如何将txt中的数据整理到Matlab中画图

需求:我有一个如下图所示格式错乱的txt文本,现在我需要用matlab把其中的某些列画成图,具体步骤如下: 1.txt文本中的初始值整理好; 2.新建excel文件,数据-导入-选择txt文档-导入; 这里需要说明的是:excel文件必须放在MATLAB的主文件夹下,如上图所示的位置。 下面开始导入数据: 一直下一步知道完成。 3.选定排序,对B...

MATLAB中floor、round、ceil、fix区别

Matlab取整函数有: fix, floor, ceil, round.具体应用方法如下:fix朝零方向取整,如fix(-1.3)=-1; fix(1.3)=1;floor,顾名思义,就是地板,所以是取比它小的整数,即朝负无穷方向取整,如floor(-1.3)=-2; floor(1.3)=1;floor(-1.8)=-2,floor(1.8)=1ceil...

bp神经网络及matlab实现

本文主要内容包含: (1) 介绍神经网络基本原理,(2) AForge.NET实现前向神经网络的方法,(3) Matlab实现前向神经网络的方法 。 第0节、引例 本文以Fisher的Iris数据集作为神经网络程序的測试数据集。Iris数据集能够在http://en.wikipedia.org/wiki/Iris_flower_data_set 找到。这...

Matlab命令合集 妈妈再也不用担心我不会用matlab了

matlab命令一、常用对象操作:除了一般windows窗口的常用功能键外。1、!dir 可以查看当前工作目录的文件。 !dir& 可以在dos状态下查看。2、who 可以查看当前工作空间变量名, whos 可以查看变量名细节。3、功能键:功能键 快捷键 说明方向上键 Ctrl+P 返回前一行输入方向下键 Ctrl+N 返回下一行输入方向左键 Ct...

Matlab图像处理系列4———傅立叶变换和反变换的图像

注意:这一系列实验的图像处理程序,使用Matlab实现最重要的图像处理算法 1.Fourier兑换 (1)频域增强 除了在空间域内能够加工处理图像以外,我们还能够将图像变换到其它空间后进行处理。这些方法称为变换域方法,最常见的变换域是频域。 使用Fourier变换把图像从空间域变换到频域。在频域内做对应增强处理,再从频域变换到空间域得到处理后的图像。...