matlab 拟合函数,MATLAB的拟合函数和工具
一元函数拟合可用cftool工具箱, 对于一元多项式拟合也可用polyfit()
多元线性函数y=ax的拟合函数regress()
语法是:
[a, aint]=regress(y,x,alpha)
其中1-alpha是置信度, 默认alpha=0.05. 即置信度为�, aint是a的置信区间
多元非线性函数最小二乘拟合nlinfit()(在MATLAB的统计工具箱中); lsqcurvefit()(在MATLAB的优化工具箱中)
函数nlinfit()的语法是:
[a,r,J]=nlinfit(X,Y,Fun,a0,options)
其中Fun是函数y=f(a,x)的M-函数, 用@函数文件名表示, 或由inline()函数表示,X是自变量的实测数据阵,第j列是第j个自变量数据, Y是因变量的实测数据列向量,其第i列的值是函数y=Fun(a,x)中x取X的第i行时的测量值. a0是参数a的估计初值列向量,输出是在最小二乘意义下的最佳参数a列向量,残差r,残差r对a的Jacobi向量构成的矩阵J,options是选项, 可以在运行nlinfit前先用statset来修改默认的参数值
常用的参数为
'MaxIter' - 最大叠代次数,默认值为100.
'TolFun' - 残数平方和允许值. 默认值 1e-8.
'TolX' - 参数a的允许误差. 默认值 1e-8.
函数nlinfit 忽略NaN
设置法如
options=statset(‘MaxIter’, 200, ‘TolFun’, 1e-10)
再运行 c=nlparci(a,r,J)就得到置信度为95%的置信区间c
再用n=numel(c);
errorbar(1:n,a,c(:,1)-a,c(:,2)-a); 绘制出参数估计及其置信区间.
也可以用nlintool图形交互式窗口来拟合,格式是
nlintool(X,Y, Fun, a0, a, 'xname','yname');
函数lsqcurvefit()的语法是
[a, rnorm, r, exitflag]=lsqcurvefit(Fun, a0, X,Y, lb,ub,options)
其中lb,up是a的预估下界和上界向量,rnorm为误差平方和, exitflag是运行情况,
1 收敛
2 a的改变比规定的允许值小.
3 残数的改变比规定的允许值小.
4 搜索方向减少的量比规定的允许值小.
0 超过叠代次数.
-1 因函数Fun内而终止
-2 不符合界的规定.
-4 在当前线搜索方向不足以减少残数.
Options可以用optimset来修改默认的参数值, 参数名见statset的参数名(更多的参数可用help optimoptionst得到)例
options=optimset(‘MaxIter’, 200, ‘TolFun’, 1e-10)
一元函数拟合可用cftool工具箱, 对于一元多项式拟合也可用polyfit()
多元线性函数y=ax的拟合函数regress()
语法是:
[a, aint]=regress(y,x,alpha)
其中1-alpha是置信度, 默认alpha=0.05. 即置信度为�, aint是a的置信区间
多元非线性函数最小二乘拟合nlinfit()(在MATLAB的统计工具箱中); lsqcurvefit()(在MATLAB的优化工具箱中)
函数nlinfit()的语法是:
[a,r,J]=nlinfit(X,Y,Fun,a0,options)
其中Fun是函数y=f(a,x)的M-函数, 用@函数文件名表示, 或由inline()函数表示,X是自变量的实测数据阵,第j列是第j个自变量数据, Y是因变量的实测数据列向量,其第i列的值是函数y=Fun(a,x)中x取X的第i行时的测量值. a0是参数a的估计初值列向量,输出是在最小二乘意义下的最佳参数a列向量,残差r,残差r对a的Jacobi向量构成的矩阵J,options是选项, 可以在运行nlinfit前先用statset来修改默认的参数值
常用的参数为
'MaxIter' - 最大叠代次数,默认值为100.
'TolFun' - 残数平方和允许值. 默认值 1e-8.
'TolX' - 参数a的允许误差. 默认值 1e-8.
函数nlinfit 忽略NaN
设置法如
options=statset(‘MaxIter’, 200, ‘TolFun’, 1e-10)
再运行 c=nlparci(a,r,J)就得到置信度为95%的置信区间c
再用n=numel(c);
errorbar(1:n,a,c(:,1)-a,c(:,2)-a); 绘制出参数估计及其置信区间.
也可以用nlintool图形交互式窗口来拟合,格式是
nlintool(X,Y, Fun, a0, a, 'xname','yname');
函数lsqcurvefit()的语法是
[a, rnorm, r, exitflag]=lsqcurvefit(Fun, a0, X,Y, lb,ub,options)
其中lb,up是a的预估下界和上界向量,rnorm为误差平方和, exitflag是运行情况,
1 收敛
2 a的改变比规定的允许值小.
3 残数的改变比规定的允许值小.
4 搜索方向减少的量比规定的允许值小.
0 超过叠代次数.
-1 因函数Fun内而终止
-2 不符合界的规定.
-4 在当前线搜索方向不足以减少残数.
Options可以用optimset来修改默认的参数值, 参数名见statset的参数名(更多的参数可用help optimoptionst得到)例
options=optimset(‘MaxIter’, 200, ‘TolFun’, 1e-10)
matlab中nlinfit函数非线性拟合的使用方法如下:
例1
clear all;
x1=[0.4292 0.4269 0.381 0.4015 0.4117 0.3017]';
x2=[0.00014 0.00059 0.0126 0.0061 0.00425 0.0443]';
x=[x1 x2];
y=[0.517 0.509 0.44 0.466 0.479 0.309]';
f=@(p,x) 2.350176*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)-0.5).*x(:,2);
p0=[8 0.5]';
opt=optimset('TolFun',1e-3,'TolX',1e-3);%
[p R]=nlinfit(x,y,f,p0,opt)
例2
混凝土的抗压强度随养护时间的延长而增加,现将一批混凝土作成12个试块,记录了养护日期x(日)及抗压强度y(kg/cm2)的数据:
养护时间x 2 3 4 5 7 9 12 14 17 21 28 56
抗压强度y 35+r 42+r 47+r 53+r 59+r 65+r 68+r 73+r 76+r 82+r 86+r 99+r
建立非线性回归模型,对得到的模型和系数进行检验。
注明:此题中的+r代表加上一个[-0.5,0.5]之间的随机数
%模型为:y=a+k1*exp(m*x)+k2*exp(-m*x);
clc;clear;
x=[2 3 4 5 7 9 12 14 17 21 28 56];
r=rand(1,12)-0.5;
y1=[35 42 47 53 59 65 68 73 76 82 86 99];
y=y1+r
myfunc=inline('beta(1)+beta(2)*exp(beta(4)*x)+beta(3)*exp(-beta(4)*x)','beta','x');
beta=nlinfit(x,y,myfunc,[0.5 0.5 0.5 0.5]);
a=beta(1),k1=beta(2),k2=beta(3),m=beta(4)
%test the model
xx=min(x):max(x);
yy=a+k1*exp(m*xx)+k2*exp(-m*xx);
plot(x,y,'o',xx,yy,'r')
结果:
a = 87.5244
k1 = 0.0269
k2 = -63.4591
m = 0.1083
You need to define your 'model' as a function (possibly in a seperate m-file). For example
>>beta = nlinfit(X,y,myfun,beta0)
where MYFUN is a MATLAB function such as:
function yhat = myfun(beta, X)
b1 = beta(1);
b2 = beta(2);
yhat = 1 ./ (1 + exp(b1 + b2*X));
MYFUN can also be an inline object:
fun = inline('1 ./ (1 + exp(b(1) + b(2*x))', 'b', 'x')
nlinfit(x, y, fun, b0)
例3
y=(Asin(Bx)+C)*sin(Dx)+E
x=11.96,y=1.7;
x=12.22,y=7.3;
x=27.56,y=1.0;
x=27.82,y=8.0;
x=19.76,y=4.5;
求未知参数A,B,C,D,E
x=[11.96,12.22,19.76,27.56,27.82];
y=[1.7,7.3,4.5,1.0,8.0];
fun=inline('(a(1)*sin(a(2)*x)+a(3)).*sin(a(4)*x)+a(5)','a','x');
a=nlinfit(x,y,fun,[0.05 0.05 0.05 0.05 0.05]);
yy=(a(1)*sin(a(2)*x)+a(3)).*sin(a(4)*x)+a(5);
plot(x,y,'*',x,yy,'r')
非线性优化-matlab函数库-optimset
创建或编辑一个最优化参数选项
句法规则
options = optimset('param1',value1,'param2',value2,...) %设置所有参数及其值,未设置的为默认值options = optimset %全部设置为默认
options = optimset(optimfun) %设置与最优化函数有关的参数为默认
options = optimset(oldopts,'param1',value1,...) %复制一个已存在的选项,修改特定项
options = optimset(oldopts,newopts) %用另一个新选项合并目前选项
因素ParameterValueDescription
Display'off' | 'iter' | 'final' | 'notify''off' 表示不显示输出; 'iter' 显示每次迭代的结果; 'final' 只显示最终结果; 'notify' 只在函数不收敛的时候显示结果.
MaxFunEvalspositive integer函数允许估值的最大值.
MaxIterpositive integer迭代次数的最大值.
TolFunpositive scalar函数迭代的终止误差.
TolXpositive scalar结束迭代的X值.
matlab 拟合函数,MATLAB的拟合函数和工具相关推荐
- 数据拟合---使用自定义函数进行非线性拟合 -在Origin。matlab拟合工具箱cftool
在Origin中使用自定义函数进行非线性拟合 http://blog.163.com/wuhen211@126/blog/static/7474635020105233269949/ matlab拟合 ...
- matlab拟合多自变量函数,matlab曲线拟合公式中含有两个变量,x是自变量,y既是自变量又是因变量,求指导,y=f(x,y)...
首先,将x.y看成同一变量,即x(1).x(2) 然后,定义自变量函数,即fun=inline('x(2)-f(x(1),x(2))','a','x')%a是拟合系数 再用Matlab的nlinfit ...
- 【MATLAB深度学习工具箱】学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的函数】
介绍 上一篇 [MATLAB深度学习工具箱]学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的数据结构]_bear_miao的博客-CSDN博客原文链接如下[MATLAB深度学习工具箱]学 ...
- 多项式在matlab中的应用,matlab的应用-多项式函数及多项式拟合
matlab的应用-多项式函数及多项式拟合 Matlab 的应用- 多项式函数及多项式拟合 本节将向大家简要介绍 matlab 在多项式处理方面的应用. 多项式函数主要有: roots 求多项式的根 ...
- matlab使用自带的拟合工具cftool对数据进行拟合并生成拟合函数代码
在数据处理中经常会需要对数据进行拟合,拟合完成之后可以通过拟合曲线的方程对数据进行预测.下面主要介绍一下如何适用matlab自带的拟合工具包对数据进行拟合,全程不需要编写一句代码,拟合完成之后还能生成 ...
- MATLAB实现多峰高斯函数拟合/多峰高斯分布函数拟合(MATLAB全代码)
基于MATLAB实现多峰高斯函数拟合/多峰高斯分布函数拟合,提供三类多峰函数拟合方法,分别为双峰函数.三峰函数和自定义高斯函数. 1 原理 2 MATLAB代码实现 MATLAB函数如下: funct ...
- 列表函数的最小二乘拟合(matlab)
最小二乘法拟合概述 算法原理 设是定义在点集上的列表函数,构造广义多项式 使得最小,其中为待定参数, 是已知的一组基函数,通过求解正规方程组来确定c的方法称为最小二乘拟合. 伪代码 1)给定待拟合量x ...
- false函数matlab,ISNUMBER函数使用表达式说明表 matlab拟合函数表达式
ISNUMBER函数使用表达式说明表 matlab拟合函数表达式,[excel助手]今天为大家分享一篇干货知识,如何设置matlab拟合函数表达式,今天的分享角度是从工作中常用的角度谈的,正如标题提到 ...
- MATLAB中的一维插值与函数拟合
本文主要记录Matlab中常用的一维插值与函数拟合的使用方法 文章目录 前言 一.一维插值 二.函数拟合 2.1 多项式拟合 2.1.1多项式拟合指令 2.1.2 图形窗口的多项式拟合 2.2 指定函 ...
- 【智能控制实验】基于MATLAB的BP神经网络实现非线性函数拟合设计
基于MATLAB的BP神经网络实现非线性函数拟合设计 一.实验要求: 重点是掌握BP神经网络的学习算法原理,掌握matlab工具箱设计BP神经网络拟合非线性模型的方法(m文件):掌握在图形用户界面下设 ...
最新文章
- Fast and accurate short read alignment with Burrows-Wheeler transform
- 波士顿动力CEO:不排斥军方订单,就想你粗暴地对待机器狗
- 提交时是使用防抖还是节流_使用BlockingExecutor进行节流任务提交
- 如何学习编程?顺便介绍些好的网站
- 《软件工程实践》第三次作业-原型设计(结对第一次)
- Cause: java.sql.SQLException: Connection is read-only. Queries leading to data使用MySQL的时候遇到的问题,后续继续解决
- 进程和线程的主要区别
- 开源中国开源世界高峰论坛
- 全局配置_再次强调:必须站在全局的角度去考虑客厅的内机配置
- C#照片合成PDF_ PDF合成或拆分PDF_PDF获取页数
- H3C无线AC+AP配置3-双信号
- USB key身份认证介绍
- php 解析lrc文件格式,C#解析Lrc歌词文件过程详解
- PyTorch搭建LSTM实现多变量多步长时间序列预测(一):直接多输出
- python有道字典_Linux下自制有道词典 - python 解密有道词典JS加密
- 期权程序化交易接口有哪些?
- kazam录制视频在windows下无法播放解决办法
- GeoHash算法详解
- 带宽,吞吐量描述与区别 影响吞吐量因素
- 澳门大学计算机语言博士生导师王珊,四年资助百余万!澳门大学人文学院招收博士生(第二批)...
热门文章
- 验证正则表达式(一),同时验证手机号码和固定电话号码
- 新浪新闻页面抓取(JAVA-Jsoup)
- java 并口打印_linux 下java的串口,并口开发(RXTXcomm.jar)
- nod32Android版用户名及密码,ESET NOD32 最新更新有效的升级ID用户名和密码
- OutlinePass色差问题
- 百度对外开放Firefox版百度搜霸源码
- 服务器的作用都有哪些
- 电大计算机应用小抄,电大--计算机应用小抄.doc
- Java项目:优咪商城系统(java+SpringBoot+html+bootstrap+layui+maven+mysql)
- train_test_split参数解释