MATLAB软件基本的曲线拟合函数命令
[matlab曲线拟合]MATLAB的曲线拟合
![[matlab曲线拟合]MATLAB的曲线拟合](https://img.taocdn.com/s3/m/ddca46a8c67da26925c52cc58bd63186bceb9275.png)
[matlab 曲线拟合]MATLAB的曲线拟合篇一: MA TLAB的曲线拟合MA TLAB软件提供了基本的曲线拟合函数的命令。
曲线拟合就是计算出两组数据之间的一种函数关系,由此可描绘其变化曲线及估计非采集数据对应的变量信息。
1.线性拟合函数:regress调用格式:b =regress[b,bint,r,rint,stats]= regress[b,bint,r,rint,stats] =regressx=[ones …];y=x*[10;1]+normrnd;[b,bint]=regress结果得回归方程为:y=9.9213+1.0143xx=1:20;y=x+3*sin;p=polyfitxi=linspace;z=polyval;% 多项式求值函数plotlegendfunction yy=modela=beta0;b=beta0;yy=a+*exp);拟合程序:x=[8.00 8.00 10.00 10.00 10.00 10.00 12.00 12.00 12.00 14.00 14.0014.00...16.00 16.00 16.00 18.00 18.00 20.00 20.00 20.00 20.00 22.00 22.0024.00...24.00 24.00 26.00 26.00 26.00 28.00 28.00 30.00 30.00 30.00 32.0032.00...34.00 36.00 36.00 38.00 38.00 40.00 42.00]‟;y=[0.49 0.49 0.48 0.47 0.48 0.47 0.46 0.46 0.45 0.43 0.45 0.43 0.430.44 0.43...0.43 0.46 0.42 0.42 0.43 0.41 0.41 0.40 0.42 0.40 0.40 0.41 0.400.41 0.41...0.40 0.40 0.40 0.38 0.41 0.40 0.40 0.41 0.38 0.40 0.40 0.390.39]‟;beta0=[0.30 0.02];betafit = nlinfit结果:betafit =0.3896 0.1011即:a=0.3896 ,b=0.1011 拟合函数为:x1 =[1150,1000,900,850,700,625,550,475,3350,3500,5900,5800,5700,4600,4625,4725,11650,11200,11200 ]‟;x2 =[175,100,25,0,75,100,150,200,50,600,500,225,100,1225,1600,2000,1200,1000,1550 ]‟;x = [x1,x2];y=[1.44E-02,1.80E-02,6.08E-02,5.59E-02,3.42E-02,7.74E-03,1.17E-03,6.16E-03,1.91E-04,1.,resplot3)% 值的选取没有定法,与实际问题的模型有关。
matlab各类拟合曲线代码

标题:探索MATLAB中各类拟合曲线的代码应用在MATLAB中,拟合曲线是数据分析和模型建立中常用的技术之一。
通过拟合曲线,我们可以了解数据之间的关联性并建立预测模型,为进一步分析和应用数据奠定基础。
本文将深入探讨MATLAB中各类拟合曲线的代码应用,帮助读者更深入地理解该主题。
一、线性拟合曲线1. 使用MATLAB进行线性拟合曲线的代码示例在MATLAB中,使用polyfit函数可以进行线性拟合。
对一组数据点(x, y)进行线性拟合,代码如下:```matlabx = [1, 2, 3, 4, 5];y = [2, 3.5, 5, 7, 8.5];p = polyfit(x, y, 1);```其中,x为自变量,y为因变量,1表示进行一次线性拟合。
通过polyfit函数,可以得到线性拟合的系数p。
2. 线性拟合曲线的应用和特点线性拟合曲线适用于线性关系较为明显的数据,例如物理实验数据中的直线关系。
通过线性拟合,可以获得各项系数,对数据进行预测和建模。
二、多项式拟合曲线1. 使用MATLAB进行多项式拟合曲线的代码示例在MATLAB中,使用polyfit函数同样可以进行多项式拟合。
对一组数据点(x, y)进行二次多项式拟合,代码如下:```matlabx = [1, 2, 3, 4, 5];y = [1, 4, 9, 16, 25];p = polyfit(x, y, 2);```其中,x为自变量,y为因变量,2表示进行二次多项式拟合。
通过polyfit函数,同样可以得到多项式拟合的系数p。
2. 多项式拟合曲线的应用和特点多项式拟合曲线适用于数据中存在曲线关系的情况,通过选择合适的最高次数,可以灵活地拟合各种曲线形状。
三、非线性拟合曲线1. 使用MATLAB进行非线性拟合曲线的代码示例在MATLAB中,使用fit函数可以进行非线性拟合。
对一组数据点(x, y)进行指数函数拟合,代码如下:```matlabx = [1, 2, 3, 4, 5];y = [2.1, 7.4, 16.1, 29.3, 48.2];f = fit(x', y', 'exp1');```其中,x为自变量,y为因变量,'exp1'表示进行指数函数拟合。
Matlab中的曲线拟合方法

Matlab中的曲线拟合方法引言在科学与工程领域,数据拟合是一个重要的技术,可用于分析实验数据、预测未知的对应关系,并量化观察到的现象。
其中,曲线拟合是一种常见的数据拟合方法,而Matlab作为一种功能强大的科学计算软件,提供了多种曲线拟合工具和函数,方便用户进行数据分析和模型建立。
本文将对Matlab中的曲线拟合方法进行详细介绍和讨论。
一、线性拟合线性拟合是最简单且常见的曲线拟合方法,其基本思想是通过一条直线拟合数据点,找到最佳拟合直线的参数。
在Matlab中,可以使用polyfit函数实现线性拟合。
该函数接受两个输入参数,第一个参数为数据点的x坐标,第二个参数为数据点的y坐标。
返回结果为一个一次多项式拟合模型的参数。
例如,我们有一组实验测量数据如下:x = [1, 2, 3, 4, 5];y = [3, 5, 7, 9, 11];通过polyfit函数进行线性拟合:coeff = polyfit(x, y, 1);其中,1表示要拟合的多项式的次数,这里我们选择了一次多项式(直线)。
coeff即为拟合得到的直线的参数,可以通过polyval函数将参数代入直线方程,得到对应x的y值。
y_fit = polyval(coeff, x);接下来,我们可以使用plot函数将原始数据点和拟合曲线都绘制在同一张图上:figure;plot(x, y, 'o', 'MarkerSize', 10); % 绘制原始数据点hold on;plot(x, y_fit); % 绘制拟合曲线xlabel('x');ylabel('y');legend('原始数据点', '拟合曲线');通过观察图像,我们可以初步判断拟合的效果如何。
如果数据点较为分散,直线拟合效果可能较差。
在此情况下,可以考虑使用更高次的多项式进行拟合。
二、多项式拟合多项式拟合是一种常见的曲线拟合方法,其基本思想是通过一个一定次数的多项式函数来拟合数据点。
曲线拟合法的Matlab实现

曲线拟合法的Matlab实现曲线拟合在许多科学和工程领域中都有广泛应用,包括机器学习,数据科学,信号处理,控制工程等。
在Matlab中实现曲线拟合的方法有多种,其中最常用的是使用fit()函数。
以下是一个基本的示例,演示如何在Matlab中使用fit()函数进行曲线拟合。
我们需要一些数据。
假设我们有一组x和y数据点,我们想要在这些点上拟合一条曲线。
y = 3*x.^2 + 2*x + 1 + randn(size(x));fitresult = fit(x, y, 'poly1');在这里,'poly1'表示我们想要拟合一个一次多项式。
你可以使用'poly2','poly3'等来拟合更高次的多项式。
同样,你也可以使用其他类型的模型,如指数、对数、自定义函数等。
然后,我们可以使用plot()函数将原始数据和拟合曲线一起绘制出来。
在这里,'hold on'命令用于保持当前图像,这样我们就可以在同一个图形上绘制多条线了。
我们可以使用fitresult来获取拟合曲线的参数和其他信息。
例如:以上就是在Matlab中进行曲线拟合的基本步骤。
需要注意的是,对于复杂的实际问题,可能需要进行更复杂的模型选择和参数优化。
也可以使用其他工具如curve fitting toolbox进行更详细的分析和拟合。
最小二乘曲线拟合是一种数学统计方法,用于根据给定数据点拟合出一条曲线或曲面,使得该曲线或曲面最小化每个数据点到拟合曲线或曲面的平方误差之和。
这种方法广泛应用于数据分析和科学计算等领域。
本文将介绍最小二乘曲线拟合的基本原理和在Matlab中的实现方法。
假设有一组数据点 (x_i, y_i),i=1,2,...,n,需要拟合出一条曲线y=f(x)。
最小二乘法要求曲线 f(x)最小化每个数据点到曲线的平方误差之和,即E = sum (f(x_i)-y_i)^2对曲线 f(x)进行求导,得到一元一次方程:f'(x)=sum(f(x)-y)*x-sum(f(x)-y)E = sum [(f'(x))^2] * x^2 - 2 * sum [f(x) * f'(x) * x] + 2 * sum [f(x)^2]令 E对 f'(x)的导数为零,可得到最小二乘曲线拟合的方程:sum [f'(x)^2] * x^2 - 2 * sum [f(x) * f'(x) * x] + 2 * n * f(x)^2 = 0在Matlab中,可以使用polyfit函数实现最小二乘曲线拟合。
MATLAB基础教程 第6章 曲线拟合

,其中a是电容器的
初始电压, b 是充电常数。试由下面一组t,U数据确
4 8.66
5 8.99
7 9.43
9 9.63
U(伏) 6.36
即要求出二次多项式:
f ( x) a1x 2 a2 x a3
中 的 A (a1 , a2 , a3 ) 使得:
2 [ f ( x ) y ] i i i 1 11
最小
第六章 曲线拟合
6.3 用MATLAB进行曲线拟合
解法1.用解超定方程的方法
此时
1)输入以下命令: x=0:0.1:1; y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
其中
在MATLAB中,执行a=R\y命令,a即为超定方程的最小二乘解
第六章 曲线拟合
6.3 用MATLAB进行曲线拟合
方法一:多项式f(x)=a1xm+ …+amx+am+1拟合可用polyfit函数: a=polyfit(x,y,m)
输出拟合多项式系数 a=[a1, …am , am+1] (数组)
设 R=at+b a,b为待定系数
40
60
80
100
第六章 曲线拟合
6.1 线性最小二乘法
线性最小二乘法是曲线拟合最常用的解法。其基本思路为:
第一步:先选定一组函数 r1(x), r2(x), …rm(x), m<n, 令 f(x)=a1r1(x)+a2r2(x)+ …+amrm(x) 其中 a1,a2, …am 为待定系数。 (1)
关于polyfit 函数使用介绍

关于polyfit 函数使用介绍文章来源:不详作者:佚名--------------------------------------------------------------------------------该文章讲述了关于polyfit 函数使用介绍.polyfit函数的使用MATLAB软件提供了基本的曲线拟合函数的命令.多项式函数拟合:P=polyfit(x,y,n)其中n表示多项式的最高阶数,x,y为将要拟合的数据,它是用数组的方式输入.输出参数P为拟合多项式P(1)*X^N + P(2)*X^(N-1) +...+ P(N)*X + P(N+1).的系数多项式在x处的值y可用下面程序计算.y=polyval(P,x,m)线性:m=1, 二次:m=2, …polyfit的输出是一个多项式系数的行向量。
为了计算在xi数据点的多项式值,调用MATLAB 的函数polyval。
例:x=0:0.1:1;y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];A=polyfit(x,y,2)Z=polyval(A,x);Plot(x,y,’r*’,x,z,’b’)polyfit不能保证你每次都能得到最优解,math的答案是使用数值计算。
个人认为,对于这种非线性的曲线,尽量不要使用ployfit, ployfit多项式抑合适合线性方程!!用polyfit()函数去拟合这么复杂的曲线不太合适,polyfit()函数对于数据遵循多项式分布是比较好的,一般来说,利用polyfit()函数拟合的阶数不要超过5阶。
如果是不需要得到拟合曲线的函数,只是把这些点利用一些光滑曲线连接,建议使用三次样条函数spline()进行插值即可。
帮助:POL YFIT Fit polynomial to data.P = POL YFIT(X,Y,N) finds the coefficients of a polynomial P(X) ofdegree N that fits the data Y best in a least-squares sense. P is arow vector of length N+1 containing the polynomial coefficients indescending powers, P(1)*X^N + P(2)*X^(N-1) +...+ P(N)*X + P(N+1).[P,S] = POL YFIT(X,Y,N) returns the polynomial coefficients P and astructure S for use with POL YV AL to obtain error estimates forpredictions. S contains fields for the triangular factor (R) from a QRdecomposition of the Vandermonde matrix of X, the degrees of freedom(df), and the norm of the residuals (normr). If the data Y are random,an estimate of the covariance matrix of P is (Rinv*Rinv')*normr^2/df,where Rinv is the inverse of R.[P,S,MU] = POL YFIT(X,Y,N) finds the coefficients of a polynomial inXHAT = (X-MU(1))/MU(2) where MU(1) = MEAN(X) and MU(2) = STD(X). Thiscentering and scaling transformation improves the numerical propertiesof both the polynomial and the fitting algorithm.Warning messages result if N is >= length(X), if X has repeated, ornearly repeated, points, or if X might need centering and scaling.Class support for inputs X,Y:float: double, singlepolyfit.m 在MATLAB安装目录下\toolbox\matlab\polyfunfunction [p,S,mu] = polyfit(x,y,n)%POLYFIT Fit polynomial to data.% P = POLYFIT(X,Y,N) finds the coefficients of a polynomial P(X) of% degree N that fits the data Y best in a least-squares sense. P is a% row vector of length N+1 containing the polynomial coefficients in% descending powers, P(1)*X^N + P(2)*X^(N-1) +...+ P(N)*X + P(N+1).%% [P,S] = POLYFIT(X,Y,N) returns the polynomial coefficients P and a% structure S for use with POLYVAL to obtain error estimates for% predictions. S contains fields for the triangular factor (R) from a QR% decomposition of the Vandermonde matrix of X, the degrees of freedom % (df), and the norm of the residuals (normr). If the data Y are random,% an estimate of the covariance matrix of P is (Rinv*Rinv')*normr^2/df,% where Rinv is the inverse of R.%% [P,S,MU] = POLYFIT(X,Y,N) finds the coefficients of a polynomial in% XHAT = (X-MU(1))/MU(2) where MU(1) = MEAN(X) and MU(2) = STD(X). This% centering and scaling transformation improves the numerical properties % of both the polynomial and the fitting algorithm.%% Warning messages result if N is >= length(X), if X has repeated, or% nearly repeated, points, or if X might need centering and scaling.%% Class support for inputs X,Y:% float: double, single%% See also POLY, POLYVAL, ROOTS.% Copyright 1984-2004 The MathWorks, Inc.% $Revision: 5.17.4.5 $ $Date: 2004/07/05 17:01:37 $% The regression problem is formulated in matrix format as:%% y = V*p or%% 3 2% y = [x x x 1] [p3% p2% p1% p0]%% where the vector p contains the coefficients to be found. For a% 7th order polynomial, matrix V would be:%% V = [x.^7 x.^6 x.^5 x.^4 x.^3 x.^2 x ones(size(x))];if ~isequal(size(x),size(y))error('MATLAB:polyfit:XYSizeMismatch',...'X and Y vectors must be the same size.')endx = x(:);y = y(:);if nargout > 2mu = [mean(x); std(x)];x = (x - mu(1))/mu(2);end% Construct Vandermonde matrix.V(:,n+1) = ones(length(x),1,class(x));for j = n:-1:1V(:,j) = x.*V(:,j+1);end% Solve least squares problem.[Q,R] = qr(V,0);ws = warning('off','all');p = R\(Q'*y); % Same as p = V\y;warning(ws);if size(R,2) > size(R,1)warning('MATLAB:polyfit:PolyNotUnique', ...'Polynomial is not unique; degree >= number of data points.')elseif condest(R) > 1.0e10if nargout > 2warning('MATLAB:polyfit:RepeatedPoints', ...'Polynomial is badly conditioned. Remove repeated data points.') elsewarning('MATLAB:polyfit:RepeatedPointsOrRescale', ...['Polynomial is badly conditioned. Remove repeated datapoints\n' ...' or try centering and scaling as described in HELP POLYFIT.'])endendr = y - V*p;p = p.'; % Polynomial coefficients are row vectors by convention.% S is a structure containing three elements: the triangular factor from a% QR decomposition of the Vandermonde matrix, the degrees of freedom and % the norm of the residuals.S.R = R;S.df = length(y) - (n+1);S.normr = norm(r);。
matlab代码 曲线拟合

在MATLAB中,以下是一个基本的曲线拟合示例,使用多项式函数拟合数据:
matlab代码:
这个例子中,我们使用了polyfit函数来计算多项式拟合的系数,并用polyval函数来计算对应于给定x值的拟合y值。
然后,我们绘制了原始数据点和拟合曲线。
如果你想要使用交互式的曲线拟合工具,可以按照以下步骤操作:
1. 在MATLAB的主界面,点击顶部菜单栏的"Apps"(应用程序)。
2. 在弹出的窗口中,搜索并打开"Curve Fitting Tool"(曲线拟合工具)。
3. 在曲线拟合工具中,你可以导入或输入你的数据,选择拟合模型(包括多项式、指数、幂律等多种模型),并调整拟合参数。
4. 工具会自动进行拟合,并显示拟合结果和图形。
5. 如果需要,你可以将拟合的模型和参数保存到MATLAB工作区,以便在代码中使用。
利用matlab进行简单的曲线拟合

使用Matlab进行曲线拟合的方法,把学习所得记录下来,和大家共享。
一、单一变量的曲线逼近Matlab有功能强大的曲线拟合工具箱,使用方便,能实现多种类型的线性、非线性曲线拟合。
下面结合我使用的 Matlab R2015b 来简单介绍如何使用这个工具箱。
假设我们要拟合的函数形式是 y=A*x*x + B*x, 且A>0,B>0 。
1、在命令行输入数据,也可以读取:2、启动曲线拟合工具箱3、进入曲线拟合工具箱界面“Curve Fitting tool”(1)点击“Data”按钮,弹出“Data”窗口;(2)利用X data和Y data的下拉菜单读入数据x,y,可修改数据集名“Data set name”,然后点击“Create data set”按钮,退出“Data”窗口,返回工具箱界面,这时会自动画出数据集的曲线图;(3)点击“Fitting”按钮,弹出“Fitting”窗口;(4)点击“New fit”按钮,可修改拟合项目名称“Fit name”,通过“Data set”下拉菜单选择数据集,然后通过下拉菜单“Type of fit”选择拟合曲线的类型,工具箱提供的拟合类型有:Custom Equations:用户自定义的函数类型Exponential:指数逼近,有2种类型, a*exp(b*x) 、 a*exp(b*x) +c*exp(d*x)Fourier:傅立叶逼近,有7种类型,基础型是 a0 + a1*cos(x*w) +b1*sin(x*w)Gaussian:高斯逼近,有8种类型,基础型是 a1*exp(-((x-b1)/c1)^2)Interpolant:插值逼近,有4种类型,linear、nearest neighbor、cubic spline、shape-preservingPolynomial:多形式逼近,有9种类型,linear ~、quadratic ~、cubic ~、4-9th degree ~Power:幂逼近,有2种类型,a*x^b 、a*x^b + cRational:有理数逼近,分子、分母共有的类型是linear ~、quadratic ~、cubic ~、4-5th degree ~;此外,分子还包括constant型Smoothing Spline:平滑逼近(翻译的不大恰当,不好意思)Sum of Sin Functions:正弦曲线逼近,有8种类型,基础型是 a1*sin(b1*x + c1)Weibull:只有一种,a*b*x^(b-1)*exp(-a*x^b)选择好所需的拟合曲线类型及其子类型,并进行相关设置:——如果是非自定义的类型,根据实际需要点击“Fit options”按钮,设置拟合算法、修改待估计参数的上下限等参数;——如果选Custom Equations,点击“New”按钮,弹出自定义函数等式窗口,有“Linear Equations线性等式”和“General Equations构造等式”两种标签。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB软件提供了基本的曲线拟合函数的命令。
曲线拟合就是计算出两组数据之间的一种函数关系,由此可描绘其变化曲线及估计非采集数据对应的变量信息。
1.线性拟合函数:regress()调用格式: b = regress(y,X)[b,bint,r,rint,stats] = regress(y,X)[b,bint,r,rint,stats] = regress(y,X,alpha)说明:b=[ε; β],regress(y,X)返回X与y的最小二乘拟合的参数值β、ε,y=ε+βX。
β是p´1的参数向量;ε是服从标准正态分布的随机干扰的n´1的向量;y为n´1的向量;X为n´p矩阵。
bint返回β的95%的置信区间。
r中为形状残差,rint中返回每一个残差的95%置信区间。
Stats向量包含R2统计量、回归的F值和p值。
例:x=[ones(10,1) (1:10)'];y=x*[10;1]+normrnd(0,0.1,10,1);[b,bint]=regress(y,x,0.05)结果得回归方程为:y=9.9213+1.0143x2.多项式曲线拟合函数:polyfit()调用格式: p = polyfit(x,y,n)[p,s] = polyfit(x,y,n)说明:n:多项式的最高阶数;x,y:将要拟合的数据,用数组的方式输入;p:为输出参数,即拟合多项式的系数;多项式在x处的值y可用下面程序计算:y=polyval(p,x)例:x=1:20;y=x+3*sin(x);p=polyfit(x,y,6)xi=linspace(1,20,100);z=polyval(p,xi); % 多项式求值函数plot(x,y,'o',xi,z,'k:',x,y,'b')legend('原始数据','6阶曲线')3.一般的曲线拟合:curvefit()调用格式:p=curvefit(‘Fun’,p0,x,y)说明:Fun:表示函数Fun(p,data)的M函数文件;x,y:将要拟合的数据,用数组的方式输入;p0:表示函数待拟合参数的初值;4.自定义函数拟合:nlinfit()调用格式:[beta,r,J]=nlinfit(x,y,’fun’,beta0)说明: beta:返回函数'fun'中的待定常数;r: 表示残差;J: 表示雅可比矩阵。
x,y: 要拟合的数据;fun:自定义函数;beta0:待定常数初值;例:化工生产中获得的氯气的级分y随生产时间x下降,假定在x≥8时,y与x之间有非线性模型:现收集了44组数据,利用该数据通过拟合确定非线性模型中的待定常数。
x y x y x y8 0.49 16 0.43 28 0.418 0.49 18 0.46 28 0.4010 0.48 18 0.45 30 0.4010 0.47 20 0.42 30 0.4010 0.48 20 0.42 30 0.3810 0.47 20 0.43 32 0.4112 0.46 20 0.41 32 0.4012 0.46 22 0.41 34 0.4012 0.45 22 0.40 36 0.4112 0.43 24 0.42 36 0.3614 0.45 24 0.40 38 0.4014 0.43 24 0.40 38 0.4014 0.43 26 0.41 40 0.3616 0.44 26 0.40 42 0.3916 0.43 26 0.41首先,定义非线性函数的m文件:fff6.mfunction yy=model(beta0,x)a=beta0(1);b=beta0(2);yy=a+(0.49-a)*exp(-b*(x-8));拟合程序:x=[8.00 8.00 10.00 10.00 10.00 10.00 12.00 12.00 12.00 14.00 14.00 14.00...16.00 16.00 16.00 18.00 18.00 20.00 20.00 20.00 20.00 22.00 22.00 24.00...24.00 24.00 26.00 26.00 26.00 28.00 28.00 30.00 30.00 30.00 32.00 32.00...34.00 36.00 36.00 38.00 38.00 40.00 42.00]';y=[0.49 0.49 0.48 0.47 0.48 0.47 0.46 0.46 0.45 0.43 0.45 0.43 0.43 0.44 0.43...0.43 0.46 0.42 0.42 0.43 0.41 0.41 0.40 0.42 0.40 0.40 0.41 0.40 0.41 0.41...0.40 0.40 0.40 0.38 0.41 0.40 0.40 0.41 0.38 0.40 0.40 0.39 0.39]';beta0=[0.30 0.02];betafit = nlinfit(x,y,'sta67_1m',beta0)结果:betafit =0.3896 0.1011即:a=0.3896 ,b=0.1011 拟合函数为:4.多元非线性拟合:(1).nlinfit()调用格式:[beta,r,J]=nlinfit(X,Y,'fun',beta0)说明: beta:返回函数'fun'中的待定常数;r: 表示残差;J: 表示雅可比矩阵。
X,Y: 要拟合的多元数据矩阵;fun:自定义函数;beta0:待定常数初值;例:x1 = [1150,1000,900,850,700,625,550,475,3350,3500,5900,5800,5700,4600,4625,4725,11650,11200,11200 ]';x2 = [175,100,25,0,75,100,150,200,50,600,500,225,100,1225,1600,2000,1200,1000,1550 ]';x = [x1,x2];y = [1.44E-02,1.80E-02,6.08E-02,5.59E-02,3.42E-02,7.74E-03,1.17E-03,6.16E-03,1.91E-04,1.91E-04,1.02E-03,2.83E-03,9.52E-05,3.77E-04,2.70E-04,1.87E-04,3.98E-04,4.04E-04,4.02E-04 ]';beta0 = [0.1 0.1 1 1];myfun =@(a,x)4030.0./pi./4.2./(a(1).*x(:,1).^a(2).*a(3).*x(:,1).^a(4)).*exp(-(x(:,2).^ 2./2./(a(1).*x(:,1).^a(2)).^2+30.0.^2./2./(a(3).*x(:,1).^a(4)).^2));[a,b,c,d,res] = nlinfit(x,y,myfun,beta0);a,resplot3(x1,x2,y,'o',x1,x2,myfun(a,x))% 值的选取没有定法,与实际问题的模型有关。
(2).regress()线性的不行,用二次函数。
format longA=[...0.2 13.6 8503 251 27.47.7 9.9 3658 314 13.95.8 10.8 7307 433 26.87.70 9.70 6717 257 23.87.5 9.8 7609 280 21.75.6 11.3 4271 533 14.66.27.6 52169 48 2253.23 9.16 16516 80 44.10.33 11.3 17366 85 54.10.14 9.5 14245 91 56.65.5 9.7 18184 3 31.62.3 8.9 33612 250 114.93.34.6 73927 5 1661.9 9.7 32175 150 107.50.6 9.9 33088 242 142.30.22 11.7 18620 567 60.41.88 11.76 27885 267 71.62.78 10.9 21780 76 58.7]x=A(:,1:4),Y=A(:,5)x11=x(:,1).*x(:,1);x12=x(:,1).*x(:,2);x13=x(:,1).*x(:,3);x14=x(:,1).*x(:,4);x22=x(:,2).*x(:,2);x23=x(:,2).*x(:,3);x24=x(:,2).*x(:,4);x33=x(:,3).*x(:,3);x34=x(:,3).*x(:,4);x44=x(:,4).*x(:,4);X=[x(:,:),x11,x12,x13,x14,x22,x23,x24,x33,x34,x44][B,BINT,R] = REGRESS(Y,[ones(length(Y),1),X])B就是系数,R就是预测值与实际值的差值。
(3).lsqcurvefit()clearclcx = [40 50 60 70 80 90 100 110 120 135 150]; y = [0.0096 0.0145 0.0194 0.0348 0.0501 0.07510.1000 0.1497 0.1993 0.2496 0.2999];z = [0.2400 0.2865 0.3330 0.3600 0.3870 0.40100.4150 0.4390 0.4630 0.4875 0.5120];X0 = [1 1 1 1 1 1];% 只要这样写就可以了f=@(p,x)( p(1) + p(2)*x(1,:) + p(3)*x(2,:) + p(4)*x(1,:).^2 + p(5)*x(1,:).*x(2,:) + p(6)*x(2,:).^2);p=lsqcurvefit(f,X0,[x;y],z);5.稳健回归函数:robust()稳健回归是指此回归方法相对于其他回归方法而言,受异常值的影响较小。
调用格式: b = robustfit(x,y)[b,stats] = robustfit(x,y)[b,stats] = robustfit(x,y,’wfun’,tune,’const’)说明:b:系数估计向量;stats:各种参数估计;wfun:指定一个加权函数;tune:为调协常数;const:值为’on’(默认值)时添加一个常数项,为’off ’时忽略常数项。