当前位置: 首页 > news >正文

MATLAB进阶:数据的拟合

几天我们继续深度学习MATLAB中的数据拟合

最小二乘拟合

假设已知经验公式y=f(c,x)y=f(c,x)(c为参数,x为自变量),要求根据一批有误差的数据(xi,yi),i=0,1,...,n(xi​,yi​),i=0,1,...,n确定参数c。这样的问题称为数据拟合。

最小二乘法:求c使得平方误差最小化

最小二乘法的内容我们这里不再过多讲解,这里主要侧重讲解如何用MATLAB来解决相关问题。

线性拟合

p=polyfit(x,y,k)

k次多项式拟合向量数据(x, y),返回多项式的降幂系数

p返回的向量,包含拟合多项式的系数。这些系数按降幂排列,即 p(1) 是最高次项的系数,p(end) 是常数项。

举例

x = [1, 2, 3, 4, 5];  % 自变量数据
y = [2, 4, 6, 8, 10]; % 因变量数据
k = 2;                % 拟合二次多项式p = polyfit(x, y, k); % 拟合多项式并获取系数

非线性拟合

[c,Q]=lsqcurvefit(Fun,c0,x,y,lb,ub)

其中Fun(c,x)为两个输入变量的函数句柄或匿名函数,

c0为参数c的预估值,作为迭代初值,

x,y为数据向量,

lbub分别表示c的下界和上界,

c返回参数值

Q返回误差平方和,

自变量x可以是多变量,这时第三输入参数x应为矩阵

举例

% 模型函数
fun = @(c, x) c(1) * exp(c(2) * x);% 初始参数估计
c0 = [1; 1];% 独立变量数据
x = [1; 2; 3; 4; 5];% 依赖于x的观测数据
y = [2.3; 2.9; 4.1; 5.9; 8.2];% 参数的上下界
lb = [0; -Inf]; % c(1) 不能小于0, c(2) 没有下界
ub = [Inf; Inf]; % c(1) 和 c(2) 没有上界% 调用lsqcurvefit
c = lsqcurvefit(fun, c0, x, y, lb, ub);% 输出结果
disp('拟合参数:');
disp(['c(1) = ', num2str(c(1))]);
disp(['c(2) = ', num2str(c(2))]);

线性拟合与非线性拟合的转换

虽然非线性拟合范围较广,但是却存在难以确定初始值的问题,在我们无法确定初始值时,一般用“0”来替代。而想方设法将其转化为线性函数,亦可以省去猜测初始值的步骤,并且大大减少计算所需时间

举例

这是一个非线性函数,但是如果我们左右两边同时取对数,就可以得到

这时,如果将ln(y)视为常数项z,那么我们就可以用线性拟合解决这个问题

% 假设 x 和 y 是你的数据点
x = [...]; % 你的 x 数据
y = [...]; % 你的 y 数据% 对 y 取自然对数
y_transformed = log(y);% 使用 polyfit 拟合一次多项式(线性关系)
p = polyfit(x, y_transformed, 1);% p(1) 将是斜率 b,p(2) 将是截距 ln(a)
b = p(1);
ln_a = p(2);
a = exp(ln_a); % 计算原始的 a 值

今天就学到这里,我们明天继续学习。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java中,synchronized修饰的静态方法会对整个对象加锁,这个是怎么实现的?
  • linux一些基础知识(未完待续)
  • 邻接矩阵实现图的存储
  • fastapi实现文件上传和下载的功能
  • Python基于逻辑回归的L1正则化(Lasso Logistic Regression)进行分类数据的特征选择项目实战
  • 每天一个数据分析题(四百六十)- 麦肯锡
  • C++自定义接口类设计器之可对称赋值三
  • elk+filebeat+kafka集群部署
  • 抖音小店新宠儿成都夏光汝网络科技
  • 对优先级队列(堆)的理解
  • 【工具】-gdb-学习笔记
  • 推动未来的引擎:人工智能大模型的现状与发展
  • 基于改进拥挤距离的多模态多目标优化差分进化(MMODE-ICD)求解无人机三维路径规划(MATLAB代码)
  • 云计算学习——5G网络技术
  • 前端开发者必备:揭秘谷歌F12调试的隐藏技巧!
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【翻译】babel对TC39装饰器草案的实现
  • Angular Elements 及其运作原理
  • Debian下无root权限使用Python访问Oracle
  • Idea+maven+scala构建包并在spark on yarn 运行
  • iOS | NSProxy
  • iOS编译提示和导航提示
  • js面向对象
  • leetcode386. Lexicographical Numbers
  • scrapy学习之路4(itemloder的使用)
  • STAR法则
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • vuex 笔记整理
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 分类模型——Logistics Regression
  • 基于axios的vue插件,让http请求更简单
  • 计算机在识别图像时“看到”了什么?
  • 检测对象或数组
  • 简单基于spring的redis配置(单机和集群模式)
  • 类orAPI - 收藏集 - 掘金
  • 软件开发学习的5大技巧,你知道吗?
  • 事件委托的小应用
  • 微信小程序开发问题汇总
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (1)svelte 教程:hello world
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (k8s)Kubernetes本地存储接入
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (黑马点评)二、短信登录功能实现
  • (剑指Offer)面试题34:丑数
  • (一)为什么要选择C++
  • (转) Android中ViewStub组件使用
  • (自适应手机端)行业协会机构网站模板