文档库 最新最全的文档下载
当前位置:文档库 › 四种支持向量机用于函数拟合与模式识别的Matlab示

四种支持向量机用于函数拟合与模式识别的Matlab示

四种支持向量机用于函数拟合与模式识别的Matlab示
四种支持向量机用于函数拟合与模式识别的Matlab示

四种支持向量机用于函数拟合与模式识别的Matlab示四种支持向量机用于函数拟合与模式识

别的Matlab示

四种支持向量机用于函数拟合与模式识别的Matlab示例程序(转)2010-08-08 10:02使用要点:

应研学论坛人工智能与模式识别版主magic_217之约,写一个关于针对初学者的四种支持向量机工具箱的详细使用说明。同时也不断有网友向我反映看不懂我的源代码,以及询问如何将该工具箱应用到实际数据分析等问题,其中有相当一部分网友并不了解模式识别的基本概念,就急于使用这个工具箱。本文从模式识别的基本概念谈起,过渡到神经网络模式识别,逐步引入到这四种支持向量机工具箱的使用。

本文适合没有模式识别基础,而又急于上手的初学者。作者水平有限,欢迎同行批评指正~

模式识别基本概念 [1]

模式识别的方法有很多,常用有:贝叶斯决策、神经网络、支持向量机等等。特别说明的是,本文所谈及的模式识别是指"有老师分类",即事先知道训练样本所属的类别,然后设计分类器,再用该分类器对测试样本进行识别,比较测试样本的实际所属类别与分类器输出的类别,进而统计正确识别率。正确识别率是反映分类器性能的主要指标。

分类器的设计虽然是模式识别重要一环,但是样本的特征提取才是模式识别最关键的环节。试想如果特征矢量不能有效地描述原样本,那么即使分类设计得再好也无法实现正确分类。工程中我们所遇到的样本一般是一维矢量,如:语音信号,或者是二维矩阵,如:图片等。特征提取就是将一维矢量或二维矩阵转化成一个维

数比较低的特征矢量,该特征矢量用于分类器的输入。关于特征提取,在各专业领域中也是一个重要的研究方向,如语音信号的谐振峰特征提取,图片的PCA特征提取等等。

[2]神经网络模式识别

神经网络模式识别的基本原理是,神经网络可以任意逼近一个多维输入输出函数。以三类分类:I、II、III为例,神经网络输入是样本的特征矢量,三类样本的神经网络输出可以是[1;0;0]、[0;1;0]、[0;0;1],也可以是[1;-1;-1]、[-1;1;-1]、[-1;-1;1]。将所有样本中一部分用来训练网络,另外一部分用于测试输出。通常情况下,正确分类的第I类样本的测试输出并不是[1;0;0]或是[1;-1;-1],而是如[0.1;0;-0.2]的输出。也是就说,认为输出矢量中最大的一个分量是1,其它分量是0或是-1就可以了。

[3]支持向量机的多类分类

支持向量机的基本理论是从二类分类问题提出的。我想绝大部分网友仅着重于理解二类分类问题上了,我当初也是这样,认识事物都有一个过程。二类分类的基本原理固然重要,我在这里也不再赘述,很多文章和书籍都有提及。我觉得对于工具箱的使用而言,理解如何实现从二类分类到多类分类的过渡才是最核心的内容。下面我仅以1-a-r算法为例,解释如何由二类分类器构造多类分类器。

二类支持向量机分类器的输出为[1,-1],当面对多类情况时,就需要把多类分类器分解成多个二类分类器。在第一种工具箱LS_SVMlab中,文件

Classification_LS_SVMlab.m中实现了三类分类。训练与测试样本分别为n1、

n2,它们是3 x15的矩阵,即特征矢量是三维,训练与测试样本数目均是15;由于是三类分类,所以训练与测试目标x1、x2的每一分量可以是1、2或是3,分别对应三类,如下所示:

n1=[rand(3,5),rand(3,5)+1,rand(3,5)+2];

x1=[1*ones(1,5),2*ones(1,5),3*ones(1,5)];

n2=[rand(3,5),rand(3,5)+1,rand(3,5)+2];

x2=[1*ones(1,5),2*ones(1,5),3*ones(1,5)];

1-a-r算法定义:对于N类问题,构造N个两类分类器,第i个分类器用第i类训练样本作为正的训练样本,将其它类的训练样本作为负的训练样本,此时分类器的判决函数不取符号函数sign,最后的输出是N个两类分类器输出中最大的那一类。

在文件Classification_LS_SVMlab.m的第42行:codefct='code_MOC',就是设置由二类到多类编码参数。当第42行改写成codefct='code_OneVsAll',再去掉第53行最后的引号,按F5运行该文件,命令窗口输出有:

codebook=

1-1-1

-1 1-1

-1-1 1

old_codebook=

1 23

比较上面的old_codebook与codebook输出,注意到对于第i类,将每i类训练样本做为正的训练样本,其它的训练样本作为负的训练样本,这就是1-a-r算法定义。这样通过设置codefct='code_OneVsAll'就实现了支持向量机的1-a-r多类算法。其它多类算法也与之雷同,这里不再赘述。值得注意的是:对于同一组样本,不同的编码方案得到的训练效果不尽相同,实际中应结合实际数据,选择训练效果最好的编码方案。

[4]核函数及参数选择

常用的核函数有:多项式、径向基、Sigmoid型。对于同一组数据选择不同的核函数,基本上都可以得到相近的训练效果。所以核函数的选择应该具有任意性。对训练效果影响最大是相关参数的选择,如:控制对错分样本惩罚的程度的可调参数,以及核函数中的待定参数,这些参数在不同工具箱中的变量名称是不一样的。这里仍以Classification_LS_SVMlab.m为例,在第38、39

行分别设定了gam、sig2的值,这两个参数是第63行trainlssvm函数的输入参数。在工具箱文件夹的trainlssvm.m文件的第96、97行有这两个参数的定义: %gam:Regularization parameter

%sig2:Kernel parameter(bandwidth in the case of the'RBF_kernel') 这里gam是控制对错分样本惩罚的程度的可调参数,sig2是径向基核函数的参数。所以在充分理解基本概念的基础上,将这些概念与工具箱中的函数说明相结合,就可以自如地运用这个工具箱了,因此所以最好的教科书是函数自带的函数说明。

最佳参数选择目前没有十分好的方法,在Regression_LS_SVMlab.m的第46至49行的代码是演示了交叉验证优化参数方法,可这种方法相当费时。实践中可以

采用网格搜索的方法:如gam=0:0.2:1,sig2=0:0.2:1,那么gam与sig2的组合就有6x6=36种,对这36种组合训练支持向量机,然后选择正确识别率最大的一组参数作为最优的gam与sig2,如果结果均不理想,就需要重新考虑gam与sig2的范围与采样间隔了。

[5]由分类由回归的过渡

LS_SVMlab、SVM_SteveGunn这两个工具箱实现了支持向量机的函数拟合功能。从工具箱的使用角度来看,分类与回归的最大区别是训练目标不同。回归的训练目标是实际需要拟合的函数值;而分类的训练目标是1,2,…N(分成N类),再通过适

当的编码方案将N类分类转换成多个二类分类。比较文件

Regression_LS_SVMlab.m与Classification_LS_SVMlab.m的前几行就可以注意到这一点。另外,分类算法以正确分类率来作为性能指标,在回归算法中通常采用拟合的均方误差(mean square error,MSE)来作为性能指标。

怎样用matlab指数函数拟合

matlab指数函数拟合 2011-04-2617:04碎碎j|分类:文档/报告共享|浏览17560次 刚学matlab,完全不知道如何写程序,特来求助! x=[1012.51517.52022.52527.53032.53537.54042.54547.55 0]; y=[62.177.392.5104112.9121.9125129.4134138.2142.3143.214 4.6147.2147.8149.1150.9]; y=A(1)*exp(x/A(2))+A(3) 请高手编程拟合指数函数! 分享到: 2011-05-0119:32提问者采纳 clear all; close all; x=[1012.51517.52022.52527.53032.53537.54042.54547.550]; y=[62.177.392.5104112.9121.9125129.4134138.2142.3143.2144.6147.2147.81 49.1150.9]; myfunc=inline('beta(1)+beta(2)*exp(beta(4)*x)+beta(3)*exp(-beta(4)*x)','beta','x'); beta=nlinfit(x,y,myfunc,[0.50.50.50.5]); a=beta(1),k1=beta(2),k2=beta(3),m=beta(4) xx=min(x):max(x); yy=a+k1*exp(m*xx)+k2*exp(-m*xx); plot(x,y,'o',xx,yy,'r')

提问者评价 知道了,谢谢

MATLAB拟合函数

在Matlab 6.5以上的环境下,在左下方有一个"Start"按钮,如同Windows的开始菜单,点开它,在目录"Toolboxes"下有一个"Curve Fitting",点开"Curve Fitting Tool",出现数据拟合工具界面,基本上所有的数据拟合和回归分析都可以在这里进行。 下面给你简单介绍一下它的使用方法。 首先在Matlab的命令行输入两个向量,一个向量是你要的x坐标的各个数据,另外一个是你要的y坐标的各个数据。输入以后假定叫x向量与y向量,可以在workspace里面看见这两个向量,要确保这两个向量的元素数一致,如果不一致的话是不能在工具箱里面进行拟合的。 例如在命令行里输入下列数据: x=(0:0.02:0.98)';二胡与施工的计划的风光好舒服很多国家法规和积分高科技 y=sin(4*pi*x+rand(size(x))); 此时x-y之间的函数近似的为正弦关系,频率为2,但是存在一个误差项。 可以通过作图看出它们的大体分布: plot(x,y,'*','markersize',2); 打开曲线拟合共工具界面,点击最左边的"Data..."按钮,出现一个Data对话框,在Data Sets 页面里,在X Data选项中选取x向量,Y Data选项中选取y向量,如果两个向量的元素数相同,那么Create data set按钮就激活了,此时点击它,生成一个数据组,显示在下方Data Sets列表框中。关闭Data对话框。此时Curve Fitting Tool窗口中显示出这一数据组的散点分布图。 点击Fitting...按钮,出现Fitting对话框,Fitting对话框分为两部分,上面为Fit Editor,下面为Table of Fits,有时候窗口界面比较小,Fit Editor部分会被收起来,只要把Table of Fits 上方的横条往下拉就可以看见Fit Editor。在Fit Editor里面点击New Fit按钮,此时其下方的各个选框被激活,在Data Set选框中选中刚才建立的x-y数据组,然后在Type of fit 选框中选取拟合或回归类型,各个类型的拟合或回归相应的分别是: Custom Equations 用户自定义函数 Expotential e指数函数 Fourier 傅立叶函数,含有三角函数 Gaussian 正态分布函数,高斯函数 Interpolant 插值函数,含有线性函数,移动平均等类型的拟合 Polynomial 多项式函数 Power 幂函数 Rational 有理函数(不太清楚,没有怎么用过) Smooth Spline ??(光滑插值或者光滑拟合,不太清楚) Sum of sin functions正弦函数类 Weibull 威布尔函数(没用过) 不好意思,没有学过数理统计,所以很多东西都是用了才知道,翻译也就不太准确。不过在Type of fit选框下方有一个列表框,基本上各个函数类里的函数都写成解析式列在下方以供选择,所以找合适的函数还是比较容易的。

(完整版)Matlab学习系列13.数据插值与拟合

13. 数据插值与拟合 实际中,通常需要处理实验或测量得到的离散数据(点)。插值与拟合方法就是要通过离散数据去确定一个近似函数(曲线或曲面),使其与已知数据有较高的拟合精度。 1.如果要求近似函数经过所已知的所有数据点,此时称为插值问 题(不需要函数表达式)。 2.如果不要求近似函数经过所有数据点,而是要求它能较好地反 映数据变化规律,称为数据拟合(必须有函数表达式)。 插值与拟合都是根据实际中一组已知数据来构造一个能够反映数据变化规律的近似函数。区别是:【插值】不一定得到近似函数的表达形式,仅通过插值方法找到未知点对应的值。【拟合】要求得到一个具体的近似函数的表达式。 因此,当数据量不够,但已知已有数据可信,需要补充数据,此时用【插值】。当数据基本够用,需要寻找因果变量之间的数量关系(推断出表达式),进而对未知的情形作预测,此时用【拟合】。

一、数据插值 根据选用不同类型的插值函数,逼近的效果就不同,一般有:(1)拉格朗日插值(lagrange插值) (2)分段线性插值 (3)Hermite (4)三次样条插值 Matlab 插值函数实现: (1)interp1( ) 一维插值 (2)intep2( ) 二维插值 (3)interp3( ) 三维插值 (4)intern( ) n维插值 1.一维插值(自变量是1维数据) 语法:yi = interp1(x0, y0, xi, ‘method’) 其中,x0, y0为原离散数据(x0为自变量,y0为因变量);xi为需要插值的节点,method为插值方法。 注:(1)要求x0是单调的,xi不超过x0的范围; (2)插值方法有‘nearest’——最邻近插值;‘linear’——线性插值;‘spline’——三次样条插值;‘cubic’——三次插值;

matlab拟合工具箱的使用

matlab拟合工具箱使用 2011-06-17 12:53 1.打开CFTOOL工具箱。在Matlab 6.5以上的环境下,在左下方有一个"Start"按钮,如同Windows的开始菜单,点开它,在目录"Toolboxes"下有一个"Curve Fitting",点开"Curve Fitting Tool",出现数据拟合工具界面,基本上所有的数据拟合和回归分析都可以在这里进行。也可以在命令窗口中直接输入”cftool”,打开工具箱。 2.输入两组向量x,y。 首先在Matlab的命令行输入两个向量,一个向量是你要的x坐标的各个数据,另外一个是你要的y坐标的各个数据。输入以后假定叫x向量与y向量,可以在workspace里面看见这两个向量,要确保这两个向量的元素数一致,如果不一致的话是不能在工具箱里面进行拟合的。 例如在命令行里输入下列数据: x = [196,186, 137, 136, 122, 122, 71, 71, 70, 33]; y = [0.012605; 0.013115; 0.016866; 0.014741; 0.022353; 0.019278; 0.041803; 0.038026; 0.038128; 0.088196]; 3.数据的选取。打开曲线拟合共工具界面,点击最左边的"Data..."按钮,出现一个Data对话框,在Data Sets页面里,在X Data选项中选取x向量,Y Data 选项中选取y向量,如果两个向量的元素数相同,那么Create data set按钮就激活了,此时点击它,生成一个数据组,显示在下方Data Sets列表框中。关闭Data对话框。此时Curve Fitting Tool窗口中显示出这一数据组的散点分布图。

matlab非线性参数拟合估计_很好的参考材料

使用nlinfit、fminsearch在matlab中实现基于最小二乘法的 非线性参数拟合 (整理自网上资源) 最小二乘法在曲线拟合中比较普遍。拟合的模型主要有 1.直线型 2.多项式型 3.分数函数型 4.指数函数型 5.对数线性型 6.高斯函数型 ...... 一般对于LS问题,通常利用反斜杠运算“\”、fminsearch或优化工具箱提供的极小化函数求解。在Matlab中,曲线拟合工具箱也提供了曲线拟合的图形界面操作。在命令提示符后键入:cftool,即可根据数据,选择适当的拟合模型。 “\”命令 1.假设要拟合的多项式是:y=a+b*x+c*x^ 2.首先建立设计矩阵X: X=[ones(size(x)) x x^2]; 执行: para=X\y para中包含了三个参数:para(1)=a;para(2)=b;para(3)=c; 这种方法对于系数是线性的模型也适应。 2.假设要拟合:y=a+b*exp(x)+cx*exp(x^2) 设计矩阵X为 X=[ones(size(x)) exp(x) x.*exp(x.^2)]; para=X\y 3.多重回归(乘积回归) 设要拟合:y=a+b*x+c*t,其中x和t是预测变量,y是响应变量。设计矩阵为X=[ones(size(x)) x t] %注意x,t大小相等! para=X\y polyfit函数 polyfit函数不需要输入设计矩阵,在参数估计中,polyfit会根据输入的数据生成设计矩阵。 1.假设要拟合的多项式是:y=a+b*x+c*x^2 p=polyfit(x,y,2) 然后可以使用polyval在t处预测: y_hat=polyval(p,t) polyfit函数可以给出置信区间。 [p S]=polyfit(x,y,2) %S中包含了标准差 [y_fit,delta] = polyval(p,t,S) %按照拟合模型在t处预测 在每个t处的95%CI为:(y_fit-1.96*delta, y_fit+1.96*delta)

MATLAB数据拟合例子

MATLAB数据拟合例子(一次函数、指数函数、双曲线) (2010-06-03 01:44:30)转载▼ 分类:数学工具 标签:杂 谈 一次函数:(a+bx = y) %先求出拟合函数 format long; x = [2001 2002 2003 2004 2005 2006 2007 2008 2009]; y = [32.2 31.3 29.7 28.6 27.5 26.1 25.3 23.7 22.7]; d = [1 1 1 1 1 1 1 1 1]; a=[d;x]; b = a*y'; a=a*a'; c=a\b c = 1.0e+003 * 2.436797222221444 -0.001201666666666 %所以,拟合函数为 y = 1.0e+003 *(2.436797222221444 - 0.001201666666666*x %根据拟合函数求估测值 format short; x = [2010, 2011, 2012, 2013, 2014] 1.0e+003 *( 2.436797222221444 - 0.001201666666666*x) ans = 21.4472 20.2456 19.0439 17.8422 16.6406

指数函数:( y = exp(a + b*x)) >> x = [2001 2002 2003 2004 2005 2006 2007 2008 2009]; y = [21.5 15.9 11.8 8.7 6.5 4.8 3.5 2.6 2.0]; y=log(y'); d = [1 1 1 1 1 1 1 1 1]; a=[d;x]; b = a*y; a=a*a'; c=a\b c = 601.9448 -0.2993 %所以,拟合函数为 y = exp(601.9448 - 0.2993*x) %根据拟合函数求估测值 >> x = [2010, 2011, 2012, 2013, 2014] exp(601.9448 - 0.2993*x) ans = 1.4216 1.0539 0.7813 0.5792 0.4294 双曲线:(1/y = a + b/x) format long;

matlab中的最小二乘法拟合指数函数(人口问题)

紧急:用matlab中的最小二乘法拟合指数函数(人口问题) 2008-5-11 18:37 提问者:337645394|悬赏分:10|浏览次数:8496次 t=[1971:1:1990]; y=[8.5229 8.7177 8.9221 9.0859 9.2420 9.3717 9.4974 9.6259 9.7542 9.8705 10.0072 10.1654 10.3008 10.4357 10.5851 10.7507 10.9300 11.1026 11.2704 11.4333]; 拟合曲线y=exp(a*t+b) 希望您上机操作一下,给出具体的编写程序. x=[1971:1990]; y=[8.5229 8.7177 8.9221 9.0859 9.2420 9.3717 9.4974 9.6259 9.7542 9.8705 10.0072 10.1654 10.3008 10.4357 10.5851 10.7507 10.9300 11.1026 11.2704 11.4333]; z=log(y); p=polyfit(x,z,1) y1=polyval(p,x); 由此程序求得y1=exp(0.0147*x-26.7773) 再绘图plot(x,y,'o',x,y1),结果点都在拟合的曲线的下面,谁能帮我找出毛病并修改一下? 问题补充: 并写出答案的结果 2008-5-11 21:21 最佳答案 呵呵,还需要转换一次啊。及y1=exp(z1) clear all x=[1971:1990]; y=[8.5229 8.7177 8.9221 9.0859 9.2420 9.3717 9.4974 9.6259 9.7542 9.8705 10.0072 10.1654 10.3008 10.4357 10.5851 10.7507 10.9300 11.1026 11.2704 11.4333]; fun=inline('exp(a(1)*t+a(2))','a','t') a=nlinfit(x,y,fun,[0.01 -20]) xx=1970:1990; yy=exp(a(1)*xx+a(2)); plot(x,y,'o',xx,yy) z=log(y); p=polyfit(x,z,1)

MATLAB在非线性曲线拟合中的应用研究

MATLAB 在非线性曲线拟合中的应用小结 摘要:归纳总结了非线性曲线拟合的方法、求解步骤和上机操作过程 关键词:曲线拟合非线性MATLAB 正文: 1.曲线拟合的基本原理 已知一组测定的数据(例如N 个点(xi,yi )去求得自变量x 和因变量y 的一个近似解析表达式y=φ(x )。若记误差δi=φ(xi )-yi ,i=1,2,…N ,则要使误差的平方和最小,即要求: ∑==N i i Q 1 2 δ 为最小,这就是常用的最小二乘法原理。 2 .MATLAB 曲线拟合的相关方法 2.1.函数形式: (1)多项式拟合函数polyfit ,调用格式为: p=polyfit (x,y,n ) 其中x ,y 为参与曲线拟合的实验数据,n 为拟合多项式的次数,函数返回值为拟合多项式的系数(按降幂排列)。n=1时,就为线性拟合。 例1:给出表1数据,试用最小二乘法求一次和二次拟合多项式。 表1 数据 在MATLAB 命令窗口中输入: clear; close; x=-1:0.25:1; y=[-0.2209,0.3295,0.8826,1.4392,2.0003,2.5645,3.1334,3.7061,4.2836] p1=polyfit(x,y,1) p2=polyfit(x,y,2) y1=polyval(p1,x); y2=polyval(p2,x); plot(x,y,'+',x,y1,'r:',x,y2,'k-.') 运行结果:

拟合多项式为:y*=2.0516+2.0131和y*=0.0313x2+2.2516x+2.20001 (2)非线性数据拟合函数lsqcurvefit 调用格式为: c=lsqcurvefi (t'fun',x0,xdata,ydata ) 其中'fun'为拟合函数的M -函数文件名,x0为初始向量,xdata,ydata 为参与曲线拟合的实验数据。函数返回值c 为非线性函数fun 的拟合系数。 例2:2004年全国大学生数学建模竞赛C 题(酒后驾车)中给出某人在短时间内喝下两瓶啤酒后,间隔一定的时间测量他的血液中酒精含量y (毫克/百毫升),得到数据如表2。 表2 酒精含量与饮酒时间的实验数据 通过建立微分方程模型得到短时间内喝酒后血液中 酒精浓度与时间的关系为: )(321t c t c e e c y ---= (2) 根据实验数据,利用非线性拟合函数lsqcurvefit ,确定模型(2)式中的参数c1,c2,c3。求解过程为: 先编写一个M -函数文件Example2_1: function f=Example2_1(c,tdata) f=c(1)*(exp(-c(2)*tdata)-exp(-c(3)*tdata)); 保存后,在命令窗口中输入: clear tdata=[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]; ydata=[30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25 8 15 12 10 7 7 4]; c0=[1 1 1];

matlab指数函数拟合

matlab指数函数拟合 浏览次数:347次悬赏分:50 |解决时间:2011-5-25 19:18 |提问者:孤倚修竹 x=[39;47;45;47;65;46;67;42;67;56;64;56;59;34;42;48;45;18;20;19;36;50;39;21 ;44;53;63;29;25;69]; y=[144;150;138;145;162;142;170;124;158;154;162;150;140;110;128;130;135; 114;116;124;136;142;120;120;160;158;144;130;125;175]; y=exp(a+bx) 求a b的值 最佳答案 利用cftool工具可以很快得到结果。 General model Exp1: f(x) = a*exp(b*x) Coefficients (with 95% confidence bounds): a = 101.8 (92.97, 110.6) b = 0.006974 (0.005257, 0.00869) Goodness of fit: SSE: 2459 R-square: 0.7167 Adjusted R-square: 0.7065 RMSE: 9.372 exp(a)可以当做常数。%%%%%%%%%%%%%%%%%%%%%%%% 1 command window里输入cftool; 2 点data,输入x和y的数据; 3 点fitting,然后点Newfit,在Type of fit 里选择指数拟合; 4 选好以后,点击apply即可; 追问 不好意思啊,我们的作业里面要求在common window里面直接输入代码来计算结果,能不能不用快捷操作给出一份指数拟合的代码啊,就是我在这里直接复制粘贴以后能出来运行结果的 回答 x=[39 47 45 47 65 46 67 42 67 56 64 56 59 34 42 48 45 18 20 19 36 50 39 21 44 53 63 29 25 69]; y=[144 150 138 145 162 142 170 124 158 154 162 150 140 110 128 130 135 114 116 124 136 142 120 120 160 158 144 130 125 175]; y=log(y');

matlab拟合实例

散点图 >> x=0:0.1:1; >> y=[0.99567,0.99334,1.0413,1.0929,1.1485,1.2619,1.3719,1.4896,1.6433,1.8117,.9981]; >> plot(x,y,'ok'),title('散点图') 多项式拟合 >> x=0:0.1:1; >> y=log(1+x); >> P=polyfit(x,y,3) 对观测数据x,y作3阶多项式拟合 P = 0.1079 -0.3974 0.9825 0.0004 >> xi=0:0.1:1; >> yi=polyval(P,xi); >> plot(x,y,'or'); >> hold on; >> plot(xi,yi,'b'); >> plot(xi,log(1+xi),'g'); >> plot(xi,log(1+xi),'y'); >> plot(xi,log(1+xi),'g'); >> xlabel('x'); >> ylabel('y'); >> legend('采样数据','拟合曲线','精确曲线')

指数函数拟合 >> x=0:0.01:0.99; >> y=1-sqrt(x); >> P=polyfit(x,log(y),1) P = -3.3761 0.2071 >> yi=exp(polyval(P,x)); >> plot(x,y,'.k') >> plot(x,y,'.k') >> hold on >> plot(x,yi,'g') >> xlabel('x') >> ylabel('y') >> legend('采样数据','拟合曲线'); >> hold off;

Matlab curve fitting tool用法图文教程

Matlab curve fitting tool的用法 MATLAB拟合工具箱可以方便地拟合一元函数。我们先来构造一个带有误差的数据: 其中噪声Noise服从4倍标准正态分布:然后利用MATLAB拟合工具箱进行拟合。在命令窗拷入以下代码: % 产生模拟数据 x=-6:0.2:6; y=7*sin(x)+x.^2-0.1*exp(x)+4*randn(size(x)); % 画出模拟数据曲线,颜色:黑,线宽:2, 标记大小:8,形状:圆圈 plot(x,y,'Color','k','LineW',2,'MarkerSize',8,'Marker','o') % 坐标字符大小16 set(gca,'FontS',16) % 在规定坐标位置加文字说明 text(-2,40,'y=7sin(x)+x^2-0.1e^x+Noise','FontS',16) % 坐标轴显示范围 axis([-6 6 -15 50])

运行结果: Fig-1

拟合步骤如下: 1)打开Curve fitting tool: 在命令窗中直接键入 cftool,这时显示出拟合工具窗的GUI: Fig-2

2)选择Data,在X Data 和 Y Data 中选择数据,必要的话加上权数据,在 D ata set name 框中给你拟合的数据起名(例如 xy),然后按Create data set,则数据在拟合工具窗显现。 Fig-3

3)按Fitting 键,显示拟合编辑器: Fig-4

按Creat data set,我们从数据窗中看到了刚才保存的拟合数据xy。 Fig-5

Matlab最小二乘法曲线拟合

创作编号:BG7531400019813488897SX 创作者:别如克* 最小二乘法在曲线拟合中比较普遍。拟合的模型主要有 1.直线型 2.多项式型 3.分数函数型 4.指数函数型 5.对数线性型 6.高斯函数型 ...... 一般对于LS问题,通常利用反斜杠运算“\”、fminsearch或优化工具箱提供的极小化函数求解。在Matlab中,曲线拟合工具箱也提供了曲线拟合的图形界面操作。在命令提示符后键入:cftool,即可根据数据,选择适当的拟合模型。 “\”命令 1.假设要拟合的多项式是:y=a+b*x+c*x^ 2.首先建立设计矩阵X: X=[ones(size(x)) x x^2]; 执行: para=X\y para中包含了三个参数:para(1)=a;para(2)=b;para(3)=c; 这种方法对于系数是线性的模型也适应。 2.假设要拟合:y=a+b*exp(x)+cx*exp(x^2) 设计矩阵X为 X=[ones(size(x)) exp(x) x.*exp(x.^2)]; para=X\y 3.多重回归(乘积回归) 设要拟合:y=a+b*x+c*t,其中x和t是预测变量,y是响应变量。设计矩阵为 X=[ones(size(x)) x t] %注意x,t大小相等! para=X\y polyfit函数 polyfit函数不需要输入设计矩阵,在参数估计中,polyfit会根据输入的数据生成设计矩阵。 1.假设要拟合的多项式是:y=a+b*x+c*x^2 p=polyfit(x,y,2) 然后可以使用polyval在t处预测: y_hat=polyval(p,t) polyfit函数可以给出置信区间。 [p S]=polyfit(x,y,2) %S中包含了标准差

Matlab拟合工具箱CFtool使用指南

matlab拟合工具箱使用 1.打开CFTOO工具箱 在Matlab以上的环境下,在左下方有一个"Start "按钮,如同 Win dows的开始菜单,点开它,在目录"Toolboxes"下有一个"Curve Fitting ",点开"Curve Fitting Tool",出现数据拟合工具界面,基本上所有的数据拟合和回归分析都可以在这里进行。也可以在命令窗口中直接输入"cftool ",打开工具箱。 2.输入两组向量x,y 首先在Matlab的命令行输入两个向量,一个向量是你要的x坐标的各个数据,另外一个是你要的y坐标的各个数据。输入以后假定叫x向量与y向量,可以在workspace里面看见这两个向量,要确保这两个向量的元素数一致,如果不一致的话是不能在工具箱里面进行拟合的。 例如在命令行里输入下列数据 x = [196,186, 137, 136, 122, 122, 71, 71,70, 33]; 3.选取数据 打开曲线拟合共工具界面,点击最左边的"Data..."按钮,出现

一个Data对话框,在Data Sets页面里,在X Data选项中选取x向 量,Y Data选项中选取y向量,如果两个向量的元素数相同,那么Create data set 按钮就激活了,此时点击它,生成一个数据组,显 示在下方Data Sets列表框中。关闭Data对话框。此时Curve Fitting Tool窗口中显示出这一数据组的散点分布图。 4.拟合曲线(幕函数power)。 点击Fitting... 按钮,出现Fitting 对话框,Fitting 对话框分为两部分,上面为Fit Editor ,下面为Table of Fits ,有时候窗口界面比较小,Fit Editor 部分会被收起来,只要把Table of Fits 上方的横条往下拉就可以看见Fit Editor 。在Fit Editor 里面点击New Fit按钮,此时其下方的各个选框被激活,在Data Set选框中 选中刚才建立的x-y数据组,然后在Type of fit选框中选取拟合或回归类型,各个类型的拟合或回归相应的分别是: Custom Equations 用户自定义函数 Expote ntial e 指数函数 Fourier傅立叶函数,含有三角函数 Gaussian正态分布函数,高斯函数

matlab最小二乘法的非线性参数拟合

matlab最小二乘法的非线性参数拟合 首先说一下匿名函数:在创建匿名函数时,Matlab记录了关于函数的信息,当使用句柄调用该函数的时候,Matlab不再进行搜索,而是立即执行该函数,极大提高了效率。所以首选匿名函数。具体拟合时可以使用的方法如下: 1 曲线拟合工具箱提供了很多拟合函数,使用简单 非线性拟合nlinfit函数 clear all; x1=[ ]'; x2=[ ]'; x=[x1 x2]; y=[ ]'; f=@(p,x) *p(1)*(1-1/p(2))*(1-(1-x(:,1).^(1/p(2))).^p(2)).^2.*(x(:,1).^(-1/p(2))-1).^(-p(2)).*x(:,1). ^(-1/p(2).*x(:,2); p0=[8 ]'; opt=optimset('TolFun',1e-3,'TolX',1e-3);% [p R]=nlinfit(x,y,f,p0,opt) 2 最小二乘法在曲线拟合中比较普遍。拟合的模型主要有 1.直线型 2.多项式型 3.分数函数型 4.指数函数型 5.对数线性型 6.高斯函数型

一般对于LS问题,通常利用反斜杠运算“\”、fminsearch或优化工具箱提供的极小化函数求解。在Matlab中,曲线拟合工具箱也提供了曲线拟合的图形界面操作。在命令提示符后键入:cftool,即可根据数据,选择适当的拟合模型。“\”命令 1.假设要拟合的多项式是:y=a+b*x+c*x^ 2.首先建立设计矩阵X: X=[ones(size(x)) x x^2]; 执行: para=X\y para中包含了三个参数:para(1)=a;para(2)=b;para(3)=c; 这种方法对于系数是线性的模型也适应。 2.假设要拟合:y=a+b*exp(x)+cx*exp(x^2) 设计矩阵X为 X=[ones(size(x)) exp(x) x.*exp(x.^2)]; para=X\y 3.多重回归(乘积回归) 设要拟合:y=a+b*x+c*t,其中x和t是预测变量,y是响应变量。设计矩阵为X=[ones(size(x)) x t] %注意x,t大小相等! para=X\y polyfit函数 polyfit函数不需要输入设计矩阵,在参数估计中,polyfit会根据输入的数据生成设计矩阵。 1.假设要拟合的多项式是:y=a+b*x+c*x^2 p=polyfit(x,y,2) 然后可以使用polyval在t处预测: y_hat=polyval(p,t) polyfit函数可以给出置信区间。 [p S]=polyfit(x,y,2) %S中包含了标准差

matlab非线性参数拟合估计_很好的参考材料

使用nlinfit 、fminsearch 在matlab 中实现基于最小二乘法的 非线性参数拟合 (整理自网上资源) 最小二乘法在曲线拟合中比较普遍。拟合的模型主要有 1. 直线型 2. 多项式型 3. 分数函数型 4. 指数函数型 5. 对数线性型 6. 高斯函数型一般对于 LS 问题,通常利用反斜杠运算“”、 fminsearch 或优化工具箱提供的极小化函数求解。在 Matlab 中,曲线拟合工具箱也提供了曲线拟合的图形界面操作。在命令提示符后键入: cftool ,即可根据数据,选择适当的拟合模型。 “”命令 1. 假设要拟合的多项式是:y=a+b*x+c*xT.首先建立设计矩阵X: X=[o nes(size(x)) x x A2]; 执行: para=X\y para 中包含了三个参数: para(1)=a;para(2)=b;para(3)=c; 这种方法对于系数是线性的模型也适应。 2. 假设要拟合: y=a+b*exp(x)+cx*exp(xA2) 设计矩阵 X 为 X=[ones(size(x)) exp(x) x.*exp(x.A2)]; para=X\y 3. 多重回归(乘积回归) 设要拟合: y=a+b*x+c*t ,其中 x 和 t 是预测变量, y 是响应变量。设计矩阵为X=[ones(size(x)) x t] % 注意 x,t 大小相等! para=X\y polyfit 函数 polyfit 函数不需要输入设计矩阵,在参数估计中, polyfit 会根据输入的数据生成设计矩阵。 1. 假设要拟合的多项式是: y=a+b*x+c*xA2 p=polyfit(x,y,2) 然后可以使用 polyval 在 t 处预测: y_hat=polyval(p,t) polyfit 函数可以给出置信区间。 [p S]=polyfit(x,y,2) %S 中包含了标准差 [y_fit,delta] = polyval(p,t,S) % 按照拟合模型在 t 处预测 在每个 t 处的 95%CI为:(y_fit-1.96*delta, y_fit+1.96*delta) 2. 指数模型也适应

相关文档
相关文档 最新文档