MATLAB多元非线性回归nlinfit拟合圆拟合球拟合函数

article/2025/9/9 8:06:45

先上实验效果,你觉得有帮助可以继续阅读。代码解析在B站有上传视频(用户昵称同名),代码也有详细备注。

拟合圆和球面:

 拟合多元非线性函数:y = p1*x1+p2*x1^2+p3*x2+p4*x2^2+exp(-p5*x3)的拟合结果:

 

 代码思路:数学原理不多赘述,网络上很多,我们主打实践。使用nlinfit命令,但是网络上它的说明不太易懂,结合案例就很明白了。

 代码如下,需要自取哦:

案例一:拟合半圆

clc,clear,clf
%仿真必要参数输入
R = 10; %半径
DeltaR = 0.8; %正负误差
X0 = 2; %圆心横坐标
Y0 = -1; %圆心纵坐标
% 产生随机误差圆周数据
theta = rand(1,200)*2*pi;
rho=R+(rand(1,200)*2-1)*DeltaR;
x = rho.*cos(theta)+X0;
y = rho.*sin(theta)+Y0;
% 绘制随机误差圆数据
plot(x,y,'ro')
hold on
grid on
axis equal
% 数据标准化排序处理
x = x(:); y = y(:);
data=unique([x(:),y(:)],'rows');
MF=@(p,data)(data(:,1)-p(1)).^2+(data(:,2)-p(2)).^2-p(3)^2;
% 拟合
% 输入参数依次为:自变量,目标0,优化函数,初始值(起始点)
p=nlinfit(data,zeros(size(data,1),1),MF,[0 0 0]'); 
thetaf = linspace(0,2*pi,200);
rhof = p(3)*ones(1,200);
xf = rhof.*cos(thetaf)+p(1);
yf = rhof.*sin(thetaf)+p(2);
plot(xf,yf,'k-');
title(sprintf('圆心为(%f,%f),半径为%f',p(1),p(2),p(3)))

案例二:拟合球面

注:球坐标系符号规则如下:

clc,clear,clf
%仿真必要参数输入
R = 10; %半径
DeltaR = 0.8; %正负误差
X0 = 2; %圆心横坐标
Y0 = -1; %圆心纵坐标
Z0 = -2; %圆心纵坐标
% 产生随机误差圆周数据
phi = rand(1,200)*2*pi;
theta = (rand(1,200)*2-1)*pi;
rho=R+(rand(1,200)*2-1)*DeltaR;
x = rho.*cos(theta).*cos(phi)+X0;
y = rho.*cos(theta).*sin(phi)+Y0;
z = rho.*sin(theta)+Z0;
% 绘制随机误差圆数据
plot3(x,y,z,'ro')
hold on
grid on
axis equal
% 数据标准化排序处理
x = x(:); y = y(:); z = z(:);
data=unique([x(:),y(:),z(:)],'rows');
MF=@(p,data)(data(:,1)-p(1)).^2+(data(:,2)-p(2)).^2+(data(:,3)-p(3)).^2-p(4)^2;
% 拟合
% 输入参数依次为:自变量,目标0,优化函数,初始值(起始点)
p=nlinfit(data,zeros(size(data,1),1),MF,[0 0 0 0]'); 
%绘制球面
Rfit = p(4);
[X,Y,Z] = sphere;
Xfit = X * Rfit+p(1);
Yfit = Y * Rfit+p(2);
Zfit = Z * Rfit+p(3);
S = surf(Xfit,Yfit,Zfit);
S.EdgeColor = 'none';
S.FaceAlpha = 0.4;
title(sprintf('球心为(%f,%f,%f),半径为%f',p(1),p(2),p(3),p(4)))

案例三:拟合多元非线性函数

y = p1*x1+p2*x1^2+p3*x2+p4*x2^2+exp(-p5*x3)

clc,clear,clf
%自变量xi因变量y
x1 = (rand(1,100)*2-1)*5;
x2 = (rand(1,100)*2-1)*5;
x3 = (rand(1,100)*2-1)*5;
y = 0.2*x1+0.4*x1.^2+(-3)*x2.^2+exp(-0.1*x3);
%数据整理
x1 = x1(:);x2 = x2(:); x3 = x3(:); y = y(:);
data=unique([x1(:),x2(:),x3(:),y(:)],'rows');
%构造拟合函数,目标是0
MF=@(p,data)p(1)*x1+p(2)*x1.^2+p(3)*x2+p(4)*x2.^2+exp(-p(5)*x3)-y;
p=nlinfit(data,zeros(size(data,1),1),MF,[0 0 0 0 0]');%拟合的参数
%评价拟合结果
yfit = p(1)*x1+p(2)*x1.^2+p(3)*x2+p(4)*x2.^2+exp(-p(5)*x3);
xfit = 1:length(yfit);
Vfit = yfit-y;
avevfit = sum(Vfit)/length(Vfit);
%计算RMS
RMSfit = sqrt(sum((Vfit-avevfit).^2)/(length(Vfit)-1))%绘制残差图
subplot(2,3,[4,5,6])
plot(xfit,Vfit,'ko')
title(sprintf('拟合残差RMS = %f x10^-^1^0',RMSfit*10^10))
%绘制自变量-因变量图
subplot(231)
plot(x1,y,'b.','LineWidth',1.5)
xlabel('x1')
ylabel('y')
subplot(232)
plot(x2,y,'b.','LineWidth',1.5)
xlabel('x2')
ylabel('y')
subplot(233)
plot(x3,y,'b.','LineWidth',1.5)
xlabel('x3')
ylabel('y')


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

相关文章

MATLAB 非线性隐函数拟合采坑记录(使用 fsolve solve nlinfit lsqcurvefit函数)

MATLAB 非线性隐函数拟合采坑记录(使用 fsolve solve nlinfit lsqcurvefit函数) 问题描述解决思路错误示范1代码思路原因解释模型更正更正模型1更正模型2 错误示范2代码思路原因解释模型更正更正模型1更正模型2 总结 问题描述 MATLAB的 nlinfit 和 lsqc…

Matlab多元非线性函数拟合

看了多篇文章,觉得没有一篇比较全,且可以参照的多元非线性函数拟合,看了多篇文章后总结以下内容,主要以示例给出,希望能帮助到大家快速上手。 1.需要用到的函数语法 beta nlinfit(X, Y, modelfun, beta0) X为你的自…

MATLAB中用nlinfit做多元非线性拟合(回归)

MATLAB中有一个多元非线性拟合的功能是nlinfit 基本语法是: beta nlinfit(X,Y,modelfun,beta0) 式子左边的beta可以是一个向量,向量的元素就是要回归的模型中的参数。 式子右边,modelfun是要回归的函数形式。X是函数的自变量数据&#xff1b…

使用nlinfit函数进行拟合时出现Error using nlinfit>checkFunVals (line 611)

在使用nlinfit函数进行拟合时出错,内容如下: The function you provided as the MODELFUN input has returned Inf or NaN values.从第一行可以看出,由于赋予的初始值导致了函数生成了NaN(无解),所以整个回…

【数学建模】多元非线性回归nlinfit(Matlab代码实现)

目录 1 基本语法 2 算例及Matlab代码实现 2.1 算例 2.2 数据 2.3 Matlab代码实现 1 基本语法 2 算例及Matlab代码实现 2.1 算例 熔喷非织造材料是口罩生产的重要原材料,具有很好的过滤性能,其生产工艺简单、成本低、质量轻等特点,受到国…

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

Matlab 使用nlinfit 函数进行多元非线性回归,并且绘制曲线拟合的误差区间 一、前言二、nlinfit函数使用1、函数语法2、拟合示例: 三、误差阴影绘制四、整体源码五、思考参考博客 一、前言 这个也是最近我接到的一个小项目里的内容: 有一组数…

利用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…