目录

一、线性拟合

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基础】数据拟合相关推荐

  1. 用MATLAB求解数据拟合问题

    一.什么是拟合问题? 很多时候,我们在数学建模时,会遇到下面这样的情况 已知平面上有n个数据点     希望寻求某个函数 ,使 在某种准则下与所有数据点最为接近,称为此类数学问题为 数据拟合问题 我们 ...

  2. Matlab做数据拟合中的(Results,SSE,R-square,Adjusted R-square,RMSE)

    做Curve Fitting的时候通常会有以下信息,大家不解其意,在此做简单介绍. Results :显示当前拟合的详细结果, 包括拟合类型 (模型.样条或插值函数).拟合系数以及参数匹配的95% 置 ...

  3. MATLAB之数据拟合(附实例+代码)

    数据拟合 引例--人口预测问题 解决思路: 找一个函数,去逼近这些数据,然后再根据找到的函数,计算预测点的值.polyfit() x=1790:10:2010; y=[3.9,5.3,7.2,9.6, ...

  4. 【MATLAB】数据拟合_阶数的确定

    多项式阶数N的确定 我们在拟合数据的过程中,事先不知道要拟合的数据是几阶的,那我们如何确定给定的拟合阶数N最终为多少呢? 阶数确定方法一: 这种方法是最常用的确定方法,一般情况下,我们拟合函数的目的, ...

  5. Matlab中数据拟合函数lsqcurvefit的使用方法与常见问题

    一. lsqcurvefit()使用方法 1.lsqcurvefit使用形式如下几种 x = lsqcurvefit(fun,x0,xdata,ydata) x = lsqcurvefit(fun,x ...

  6. Matlab建模---数据拟合

    一.多项式拟合函数---polyfit和polyval 1.polyfit函数 调用格式: p=polyfit(x,y,n); [p,s]=polyfit(x,y,n); [p,s,mu]=polyf ...

  7. matlab中用数据拟合圆心,拟合圆并求圆心(matlab)

    clc clear all I=imread('a003.bmp'); [m,n,p]=size(I); I=im2bw(I); se=strel('square',3); Ia=imerode(I, ...

  8. 基于MATLAB的多项式数据拟合方法研究-毕业论文

    摘要:本论文先介绍了多项式数据拟合的相关背景,以及对整个课题做了一个完整的认识.接下来对拟合模型,多项式数学原理进行了详细的讲解,通过对文献的阅读以及自己的知识积累对原理有了一个系统的认识.介绍多项式 ...

  9. MATLAB在数学建模中的应用 随手笔记(二)----- 数据拟合方法

    声明:本篇文章只是个人知识点归纳总结,不代表全书内容,望各位大佬不喜勿喷.梳理顺序是按照书籍的实际顺序梳理. 作者:sumjess 目前内容:第一章 数学建模常规方法及其MATLAB实现---数据拟合 ...

  10. MATLAB,Python,Pytorch实现数据拟合

    目录 1.MATLAB实现数据拟合 2.纯python实现数据拟合 3.pytorch实现数据拟合 1.MATLAB实现数据拟合 %MATLAB 数据拟合 x=linspace(-1,1,100); ...

最新文章

  1. 标准css属性,你一定要知道的css属性值规范
  2. Oracle发布多语种虚拟机平台GraalVM 1.0
  3. 世界级光伏产业集群落地合肥
  4. PHP中调用SVN命令更新网站方法(解决文件名包含中文更新失败的问题)
  5. 简单型的弱电机房工程汇报方案
  6. bzoj 1968: [Ahoi2005]COMMON 约数研究【枚举】
  7. python之sys模块详解
  8. xposed框架在分机安装失败_免root用Xposed框架!安卓用户一定要学会
  9. linux下pcre编译,linux下交叉编译lighttpd以及pcre
  10. Hadoop解决内存受限问题
  11. python语法基础题你好_Python基础要打牢,先学会基本语法
  12. 使用HTML和CSS格式化DBMail
  13. 关于eclipse编译出错,缺失tools.jar 1.8
  14. DenseNet 浅析
  15. B站晚会为什么被夸疯了?答案飘在84万条弹幕中……
  16. 打砖块python游戏源代码_python制作一个打砖块小游戏
  17. 机器学习知识总结 —— 12. 机器与深度学习中常用术语 [K-P]
  18. Gitlab-CI Runner缓存
  19. 解决HA is not enable for this namenode错误
  20. linux系统端口的5种状态及含义

热门文章

  1. ORACLE日期函数大全!
  2. linux下配置ipmi ip,Linux下使用命令行配置IPMI
  3. (十二)python图形用户界面
  4. MyBatis中的#和$之间的区别
  5. 平安银行软件测试项目,中国平安银行关于软件测试笔试试题(一)
  6. Spring Boot 菜鸟教程 异常 集锦
  7. go程序设计语言第十二章-反射
  8. 【项目管理】项目沟通管理
  9. 用Python标准库turtle画一头金牛,祝您新年牛气冲天!(附源码)
  10. java fx:ria_虚拟小组讨论:RIA的当前和未来状态