Matlab 使用nlinfit 函数进行多元非线性回归,并且绘制曲线拟合的误差区间

article/2025/9/9 7:55:44

Matlab 使用nlinfit 函数进行多元非线性回归,并且绘制曲线拟合的误差区间

  • 一、前言
  • 二、nlinfit函数使用
    • 1、函数语法
    • 2、拟合示例:
  • 三、误差阴影绘制
  • 四、整体源码
  • 五、思考
  • 参考博客

一、前言

这个也是最近我接到的一个小项目里的内容:
有一组数据x、y:

x=[2000	2001	2002	2003	2004	2005	2006	2007	2008	2009	2010	2011	2012	2013	2014	2015	2016	2017	2018	2019]y=[320	224	335	529	802	1966	3385	4340	4616	4752	4597	4431	4930	5770	5576	5510	5468	6970	6558	6177]

参考文献后发现需要利用这组数据拟合成特定的函数形式:
在这里插入图片描述
因此,使用MATLAB中多元非线性回归nlinfit 函数进行自定义函数的拟合,并且绘制出置信度95%下的拟合误差阴影,效果如下:
在这里插入图片描述
在这里插入图片描述
下面是回归具体拟合过程和置信区间下的误差阴影绘制。

二、nlinfit函数使用

1、函数语法

在这里插入图片描述

2、拟合示例:

x=[2000	2001	2002	2003	2004	2005	2006	2007	2008	2009	2010	2011	2012	2013	2014	2015	2016	2017	2018	2019];y=[320	224	335	529	802	1966	3385	4340	4616	4752	4597	4431	4930	5770	5576	5510	5468	6970	6558	6177]%内联函数创建自定义函数 beta为参数数组
mymodel = inline('beta(1)./(1+exp(-(beta(2)).*(x-beta(3))))','beta','x');
%定义参数初始值
beta0=[500 1 2006];
%进行拟合
[beta,r,J]= nlinfit(x,y,mymodel,beta0);
%打印拟合参数值
fprintf("拟合结果为:K=%f a=%f b=%f\n",vpa(beta(1)),vpa(beta(2)),vpa(beta(3)));

三、误差阴影绘制

%Y是预测值 delta是置信度为95%的拟合误差
[Y,delta]=nlpredci(mymodel,x,beta,r,J);
figure
x=x;
Y=Y';
delta=delta';
%绘制置信区域
fill([x x(end:-1:1)],[Y+delta Y(end:-1:1)-delta(end:-1:1)],[204/255 204/255 204/255],'EdgeColor','none');
hold on
plot(x,y,'ko',x,Y,'k');
xlabel("xx");
ylabel("y");
title("Title")

四、整体源码

x=[2000	2001	2002	2003	2004	2005	2006	2007	2008	2009	2010	2011	2012	2013	2014	2015	2016	2017	2018	2019];y=[320	224	335	529	802	1966	3385	4340	4616	4752	4597	4431	4930	5770	5576	5510	5468	6970	6558	6177]%内联函数创建自定义函数 beta为参数数组
mymodel = inline('beta(1)./(1+exp(-(beta(2)).*(x-beta(3))))','beta','x');
%定义参数初始值
beta0=[500 1 2006];
%进行拟合
[beta,r,J]= nlinfit(x,y,mymodel,beta0);
%打印拟合参数值
fprintf("拟合结果为:K=%f a=%f b=%f\n",vpa(beta(1)),vpa(beta(2)),vpa(beta(3)));
%Y是预测值 delta是置信度为95%的拟合误差
[Y,delta]=nlpredci(mymodel,x,beta,r,J);
figure
x=x;
Y=Y';
delta=delta';
%绘制置信区域
fill([x x(end:-1:1)],[Y+delta Y(end:-1:1)-delta(end:-1:1)],[204/255 204/255 204/255],'EdgeColor','none');
hold on
plot(x,y,'ko',x,Y,'k');
xlabel("xx");
ylabel("y");
title("Title")

运行结果如前言所示(当然x轴的文字是另外修改的)

五、思考

  • 关于自定义函数的拟合:一开始我用的matlab拟合工具箱,拟合结束后发现只能得到拟合参数的值和一些描述拟合结果的误差,不能绘制出来误差阴影图,搜索之后发现多元非线性回归可以实现这个需求,详见【参考博客1】。
  • 关于95%置信区间误差阴影绘制:有很多博客写到了多项式拟合以及拟合之后的95%置信区间误差阴影绘制,我对此进行了参考,详见【参考博客2】。
  • 关于其余置信区间误差区域计算、绘制例如90%,只需要nlpredci函数中设定’Alpha’,0.1即可。详见MATLAB【help-nlpredc】。

参考博客

1、使用MATLAB进行多元非线性回归——nlinfit函数的使用
2、Matlab绘制带置信区间的拟合曲线

欢迎各位留言交流!!!


同时,如果各位在作图方面有需要可以闲鱼搜索用户:Man小洁,欢迎交流。



http://chatgpt.dhexx.cn/article/muvlL1Oh.shtml

相关文章

利用nlinfit函数实现数据非线性拟合

所谓“拟合”,指的是在已有一组实验数据的前提下,研究这组数据有怎样的函数关系——最终结果是从这一组看似漫无规律的数据点中“找出”能用数学表达式表示的规律。 用数学语言描述的拟合定义如下: 一个典型的数据拟合过程包括以下几个步骤&…

Matlab非线性拟合函数——nlinfit

我们平时最常用的非线性拟合函数还是多项式拟合,有一天学弟突然问了我nlinfit 这个函数,然后直接查询matlab官方文档,原来非线性函数还可以用这个函数,下面来看看matlab官方文档的说明: 英文?没关系,下面看一下中文用法: beta = nlinfit(X, Y, modelfun, beta0) beta:…

[MATLAB]非线性回归--自配函数(nlinfit)

当谈到非线性回归模型的时候,同学们应该紧密的将线性回归紧密结合在一起,因为非线性回归很容易过拟合。那我们从一个案例谈一下非线性 拿到题目看到一个变量x一个y,非线性问题步骤应该是这样子的: 画出散点图根据散点图确定须配…

dozer使用: list对象mapping 配置

记录dozer的使用,复杂类型配置。 文档:https://dozermapper.github.io/user-guide.pdf 参考地址:https://github.com/klvnnsrikanth/DozerMappingExample.git Demo 的目录结构: 不是集合的普通映射方式 Source 类: Destinatio…

java dozer map转对象_对象转换利器之Dozer

在Java的世界中,经常会涉及到需要在2个对象中进行转换,比如说: 调用SOAP Web服务,需要把自己的Domain对象转换为Soap服务的Jaxb对象请求, 在分层级SOA架构中,2个层级之间Domain对象的转换, 在分…

SpringBoot2.x 集成 Dozer

Dozer是Java Bean到Java Bean的映射器,它以递归的方式将数据从一个对象复制到另一个对象。通常,这些Java Bean将具有不同的复杂类型。它支持简单属性映射,复杂类型映射,双向映射,隐式显式映射,以及递归映射…

java dozer 官网,Dozer数据对象转换神器

首先,为什么要进行数据转换? 在一个分层的体系结构中,经常会使用DTO、PO、VO等封装数据,封装数据到特定的数据对象中,然而在很多情况下,某层内部的数据是不允许传递到其它层,不允许对外暴露的&a…

SpringBoot 整合 Dozer 映射框架

SpringBoot 整合 Dozer 映射框架 1. Dozer 介绍2. 为什么要使用映射框架 Dozer3. Dozer 映射框架的使用 1. Dozer 介绍 Dozer 是一个 Java Bean 到 Java Bean 的映射器,它递归地将数据从一个对象复制到另一个对象。Dozer 是用来对两个对象之间属性转换的工具&#…

Dozer的学习

Dozer的学习 此教程基于黑马程序员Java品达通用权限项目,哔哩哔哩链接:https://www.bilibili.com/video/BV1tw411f79E?p44 1.dozer介绍 Dozer是Java Bean到Java Bean映射器,它以递归方式将数据从一个对象复制到另一个对象。 dozer是用来对…

SpringBoot Dozer

文章目录 Dozerspringboot 配置 Dozer演示Dozer工具接口和实现类全面测试项目实战演示 Dozer Dozer是什么? Dozer是一个JavaBean映射工具库。 它支持简单的属性映射,复杂类型映射,双向映射,隐式显式的映射,以及递归映射。 它支…

Dozer的使用(整合springboot)

dozer是实体类与实体类之间转换的工具&#xff0c;下面是简单操作配置 引入依赖&#xff1a; <!--dozer 实体类转换工具--><dependency><groupId>net.sf.dozer</groupId><artifactId>dozer-spring</artifactId><version>5.5.1<…

【JAVA】Dozer 介绍及快速入门教程

文章目录 概述使用安装入门XML 映射注解映射SpringBoot 集成 结语 概述 Dozer 是什么? Dozer 是 Java Bean 到 Java Bean 的映射器&#xff0c;他以递归的方式将数据从一个对象复制到另一个对象。 它支持简单的属性映射&#xff0c;复杂类型映射&#xff0c;双向映射&#…

1.Dubbo教程

转自&#xff1a;https://blog.csdn.net/hellozpc/article/details/78575773 2. 什么是dubbo 2.1. 简介 DUBBO是一个分布式服务框架&#xff0c;致力于提供高性能和透明化的RPC远程服务调用方案&#xff0c;是阿里巴巴SOA服务化治理方案的核心框架&#xff0c;每天为2,000个服务…

黑马程序员Dubbo快速入门,Java分布式框架dubbo教程

分布式系统中的相关概念 &#xff08;一&#xff09;互联网项目架构目标-特点 &#xff08;二&#xff09;互联网项目架构目标-目标 &#xff08;三&#xff09;集群和分布式 &#xff08;四&#xff09;架构演进 Dubbo概述 &#xff08;一&#xff09;dubbo概述 1、dub…

Dubbo快速入门教程

Dubbo入门教程 1 、Dubbo概述 DUbbo架构 2、Dubbo快速入门 Zookeeper 安装传统的模块化开发Duboo入门小案例 修改Service模块代码修改WEB模块代码增加公共的接口模块 3、Dubbo高级特性 dubbo-admin管理平台 dubbo-adminm安装 一、dubbo-admin安装二、dubbo-admin简单使用 序…

dubbo教程总结(springboot+dubbo)

概述 Apache Dubbo 是一款微服务开发框架&#xff0c;它提供了 RPC通信 与 微服务治理 两大关键能力。这意味着&#xff0c;使用 Dubbo 开发的微服务&#xff0c;将具备相互之间的远程发现与通信能力&#xff0c; 同时利用 Dubbo 提供的丰富服务治理能力&#xff0c;可以实现诸…

Dubbo入门详细教程

什么是Dubbo&#xff1f; Dubbo 是阿里开源的远程服务调用(RPC)的分布式框架&#xff0c;提供了 SOA 服务治理方案;它的架构主要有五个角色/核心组件&#xff0c;分为是 Container(容器)、Provider(服务的提供方)、Registry(注册中心)、Consumer(服务的消费方)、Monitor(监控中…

dubbo 教程

&#xfeff;&#xfeff; 先给出阿里巴巴dubbo的主页&#xff1a;http://code.alibabatech.com/wiki/display/dubbo/Home-zh 自己的demo下载地址&#xff1a;http://download.csdn.net/detail/u012049463/6763315 1. Dubbo是什么&#xff1f; Dubbo是一个分布式服务框架&…

dubbo使用教程(可直接应用于企业开发)

本dubbo使用教程基于zookeeper-3.4.9搭建&#xff0c;包含服务提供者DubboProvider、和消费者DubboConsumer&#xff0c;可直接在Tomcat上运行。DubboProvider对外开放2个接口&#xff0c;DubboConsumer调用DubboProvider&#xff0c;并对外暴露HTTP服务。DubboProvider还提供了…

Dubbo快速入门

前言&#xff1a;本文需要建立在博主的环境之上来进行&#xff0c;大家也可以用自己的环境测试一下看能不能行得通&#xff0c;如果可以的话请在下方评论&#xff0c;让更多的人知道 Jdk&#xff1a;11 Springboot版本&#xff1a;2.6.6 Dubbo版本&#xff1a;0.2.0&#xf…