【Matlab基础】数据拟合
目录
一、线性拟合
1. 常用辅助函数
2. 多元线性拟合
例子:
二、多项式拟合
三、lsqcurvefit函数
例子1:
例子2:
四、nlinfit非线性拟合
例子1:
例子2:
五、其他拟合函数
lsqnonlin
fittype
一、线性拟合
1. 常用辅助函数
format:变换数据显示格式
simple:简化符号表达式或矩阵
syms:定义符号变量
pretty:显示为标准印刷格式
roundn(a,-4):将a的数值保留为4位小数
2. 多元线性拟合
例子:
X1=[ones(length(X(:, 1)), 1), X];%%加值为1的一列,因为拟合方程中有常数项
[beta, bint, r, rint, states]=regress(Y, X1)% 多元线性回归% y=beta(1)+beta(2)*x1+beta(3)*x2+beta(4)*x3+...% beta—系数估计% bint—系数估计的上下置信界% r—残差% rint—诊断异常值的区间% states—模型统计信息
rcoplot(r, rint)%%绘制残差图
saveas(gcf,sprintf('线性曲线拟合_残差图.jpg'),'bmp');%%保存为图片
二、多项式拟合
p=polyfit(x,y,m)
对数据进行m次多项式拟合,返回拟合多项式的系数向量
polyval(p,x0)
将x0带入,求出多项式的值
poly2str(p,'t')
把系数向量转化为多项式的代数表达式
三、lsqcurvefit函数
例子1:
xdata=[1,2,3];
ydata=[14,35,67];fun=@(x,xdata)x^2+sin(x); %%拟合函数?
x0=[0,0,0]; %系统初值
y=lsqcurvefit(fun,xo,xdata,ydata)
例子2:
function yy=myfun(beta,x) %自定义拟合函数
yy=beta(1)+beta(2)*x(:, 1)+beta(3)*x(:, 2)+beta(4)*x(:, 3)+beta(5)*(x(:, 1).^2)+beta(6)*(x(:, 2).^2)+beta(7)*(x(:, 3).^2);
endbeta0=ones(7, 1);% 初始值的选取可能会导致结果具有较大的误差。
[beta,resnorm,r, ~, ~, ~, J]=lsqcurvefit(@myfun,beta0,X,Y)% 在最小二乘意义上解决非线性曲线拟合(数据拟合)问题% beta—系数估计% resnorm—残差的平方范数 sum((fun(x,xdata)-ydata).^2)% r—残差 r=fun(x,xdata)-ydata% J—雅可比矩阵
[Ypred,delta]=nlpredci(@myfun, X, beta, r, 'Jacobian', J)
plot(X(:, 1), Y, 'k.', X(:, 1), Ypred, 'r');
saveas(gcf,sprintf('非线性曲线拟合_2.jpg'),'bmp');
四、nlinfit非线性拟合
例子1:
xdata=[1,2,3];
ydata=[14,35,67];%%样本数据myfun=inline('(beta(1)+beta(2).*exp(-x))','beta','x'); %%beta为要求得的拟合方程系数矩阵
beta0=[0.2,0.2]; %%设初值beta=nlinfit(xdata,ydata,myfunc,beta0);%%求拟合方程系数
例子2:
function yy=myfun(beta,x) %自定义拟合函数
yy=beta(1)+beta(2)*x(:, 1)+beta(3)*x(:, 2)+beta(4)*x(:, 3)+beta(5)*(x(:, 1).^2)+beta(6)*(x(:, 2).^2)+beta(7)*(x(:, 3).^2);
endbeta0=ones(7, 1);% 初始值的选取可能会导致结果具有较大的误差。
[beta, r, J]=nlinfit(X, Y, @myfun, beta0)% 非线性回归% beta—系数估计% r—残差% J—雅可比矩阵
[Ypred,delta]=nlpredci(@myfun, X, beta, r, 'Jacobian', J)% 非线性回归预测置信区间% Ypred—预测响应% delta—置信区间半角
plot(X(:, 1), Y, 'k.', X(:, 1), Ypred, 'r');saveas(gcf,sprintf('非线性曲线拟合_1.jpg'),'bmp');
五、其他拟合函数
lsqnonlin
fittype
【Matlab基础】数据拟合相关推荐
- 用MATLAB求解数据拟合问题
一.什么是拟合问题? 很多时候,我们在数学建模时,会遇到下面这样的情况 已知平面上有n个数据点 希望寻求某个函数 ,使 在某种准则下与所有数据点最为接近,称为此类数学问题为 数据拟合问题 我们 ...
- Matlab做数据拟合中的(Results,SSE,R-square,Adjusted R-square,RMSE)
做Curve Fitting的时候通常会有以下信息,大家不解其意,在此做简单介绍. Results :显示当前拟合的详细结果, 包括拟合类型 (模型.样条或插值函数).拟合系数以及参数匹配的95% 置 ...
- MATLAB之数据拟合(附实例+代码)
数据拟合 引例--人口预测问题 解决思路: 找一个函数,去逼近这些数据,然后再根据找到的函数,计算预测点的值.polyfit() x=1790:10:2010; y=[3.9,5.3,7.2,9.6, ...
- 【MATLAB】数据拟合_阶数的确定
多项式阶数N的确定 我们在拟合数据的过程中,事先不知道要拟合的数据是几阶的,那我们如何确定给定的拟合阶数N最终为多少呢? 阶数确定方法一: 这种方法是最常用的确定方法,一般情况下,我们拟合函数的目的, ...
- Matlab中数据拟合函数lsqcurvefit的使用方法与常见问题
一. lsqcurvefit()使用方法 1.lsqcurvefit使用形式如下几种 x = lsqcurvefit(fun,x0,xdata,ydata) x = lsqcurvefit(fun,x ...
- Matlab建模---数据拟合
一.多项式拟合函数---polyfit和polyval 1.polyfit函数 调用格式: p=polyfit(x,y,n); [p,s]=polyfit(x,y,n); [p,s,mu]=polyf ...
- matlab中用数据拟合圆心,拟合圆并求圆心(matlab)
clc clear all I=imread('a003.bmp'); [m,n,p]=size(I); I=im2bw(I); se=strel('square',3); Ia=imerode(I, ...
- 基于MATLAB的多项式数据拟合方法研究-毕业论文
摘要:本论文先介绍了多项式数据拟合的相关背景,以及对整个课题做了一个完整的认识.接下来对拟合模型,多项式数学原理进行了详细的讲解,通过对文献的阅读以及自己的知识积累对原理有了一个系统的认识.介绍多项式 ...
- MATLAB在数学建模中的应用 随手笔记(二)----- 数据拟合方法
声明:本篇文章只是个人知识点归纳总结,不代表全书内容,望各位大佬不喜勿喷.梳理顺序是按照书籍的实际顺序梳理. 作者:sumjess 目前内容:第一章 数学建模常规方法及其MATLAB实现---数据拟合 ...
- MATLAB,Python,Pytorch实现数据拟合
目录 1.MATLAB实现数据拟合 2.纯python实现数据拟合 3.pytorch实现数据拟合 1.MATLAB实现数据拟合 %MATLAB 数据拟合 x=linspace(-1,1,100); ...
最新文章
- 标准css属性,你一定要知道的css属性值规范
- Oracle发布多语种虚拟机平台GraalVM 1.0
- 世界级光伏产业集群落地合肥
- PHP中调用SVN命令更新网站方法(解决文件名包含中文更新失败的问题)
- 简单型的弱电机房工程汇报方案
- bzoj 1968: [Ahoi2005]COMMON 约数研究【枚举】
- python之sys模块详解
- xposed框架在分机安装失败_免root用Xposed框架!安卓用户一定要学会
- linux下pcre编译,linux下交叉编译lighttpd以及pcre
- Hadoop解决内存受限问题
- python语法基础题你好_Python基础要打牢,先学会基本语法
- 使用HTML和CSS格式化DBMail
- 关于eclipse编译出错,缺失tools.jar 1.8
- DenseNet 浅析
- B站晚会为什么被夸疯了?答案飘在84万条弹幕中……
- 打砖块python游戏源代码_python制作一个打砖块小游戏
- 机器学习知识总结 —— 12. 机器与深度学习中常用术语 [K-P]
- Gitlab-CI Runner缓存
- 解决HA is not enable for this namenode错误
- linux系统端口的5种状态及含义