非线性拟合lsqcurvefit、nlinfit

2023-11-19

问题:有些时候我们需要拟合一些非线性的表达式。

比如:我们知道一个表达式的式子是y=A*sin(x).*exp(x)-B./log(x),现在我们手里面有x与y对应的一大把数据。我们如何根据x,y的值找出最佳的A、B值。则我们现在借助Matlab的函数lsqcurvefit、nlinfit,当然你也可以使用lsqnonlin.其具体用法请自己用Matlab的帮助命令进行查看。这里仅简单介绍一下常用的方式。


注意:如果对初值比较敏感,涉及到初值设置的问题;以及拟合表达式包含积分表达式或者微分项等问题;以及一些拟合降维的问题,可以参看我的另一篇博文《数据拟合遇见


PS:如果使用Matlab以上函数拟合不出理想的结果的话,可以尝试使用我自己写的《数学计算器》里的nlinFitnlinFit2nlinFit4nlinFitDEnlinFitGAnlinFitLMnlinFitPSOnlinFitPSO2nlinFitPSO3函数


格式:lsqcurvefit(f,a,x,y)、nlinfit(x,y,f,a)

f:符号函数句柄,如果是以m文件的形式调用的时候,别忘记加@.这里需要注意,f函数的返回值是和y匹对的,即拟合参数的标准是(f-y)^2取最小值,具体看下面的例子

a:最开始预估的值(预拟合的未知参数的估计值)。如上面的问题如果我们预估A为1,B为2,则a=[1 2]

x:我们已经获知的x的值

y:我们已经获知的x对应的y的值


例子1:

问题:对于函数y=a*sin(x)*exp(x)-b/log(x)我们现在已经有多组(x,y)的数据,我们要求最佳的a,b值

%针对上面的问题,我们可以来演示下如何使用这个函数以及看下其效果

>> x=2:10;

>> y=8*sin(x).*exp(x)-12./log(x);

%上面假如是我们事先获得的值

>> a=[1 2];

>> f=@(a,x)a(1)*sin(x).*exp(x)-a(2)./log(x);

%第一种方法使用lsqcurvefit

>> lsqcurvefit(f,a,x,y)

ans =

   7.999999999999987  11.999999999988997%和我们预期的值8和12结合得非常好

>>

%第二种方法使用nlinfit

>> nlinfit(x,y,f,a)

ans =

   8.000000000000000  11.999999999999998

>>

%**********************************

%另一种方法,假如我们写了一个如下的m文件

function f=test(a,x)

f=a(1)*sin(x).*exp(x)-a(2)./log(x);

end

%则在上面lsqcurvefit函数调用如下,不要忘记那个@

lsqcurvefit(@test,a,x,y)



例子2:(多元的情况,注意看格式)

问题:我们已知z=a*(exp(y)+1)-sin(x)*b且有多组(x,y,z)的值,现在求最佳系数a,b

>> x=2:10;

>> y=10*sin(x)./log(x);

>> z=4.5*(exp(y)+1)-sin(x)*13.8;

>> f=@(a,x)a(1)*(exp(x(2,:))+1)-sin(x(1,:))*a(2);

%第一种方法使用lsqcurvefit

>> lsqcurvefit(f,[1 2],[x;y],z)%注意这里面的[x;y],这里的[1 2]表示我们设置f函数里的初始值a(1)=1,,a(2)=2

ans =

   4.499999999999999  13.800000000000024

%第二种方法使用nlinfit

>> nlinfit([x;y],z,f,[1 2])

ans =

   4.500000000000000  13.799999999999956

>>

 

http://blog.163.com/shikang999@126/blog/static/17262489620122835830776/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

非线性拟合lsqcurvefit、nlinfit 的相关文章

  • 估算缺失数据,同时强制相关系数保持不变

    考虑以下 excel 数据集 m r 2 0 3 3 0 8 4 0 1 3 2 1 5 2 2 3 1 9 2 5 1 2 3 0 2 0 2 6 我的目标是使用以下条件填充缺失值 将上述两列之间的成对相关性表示为 R 大约 0 68 将
  • 整数的十进制表示形式中的分隔数字

    例如 我想将用户输入作为整数输入 45697 并将前两位数字存储在数组 向量或其他内容中 例如 4 5 6 9 7 这样我就可以使用一些函数调用来检查前两个值 4 5 并对它们进行计算 问题 我不知道如何存储恢复前两个值 有没有简单的函数调
  • 傅里叶变换定理 matlab

    我目前正在尝试理解二维傅里叶位移定理 根据我到目前为止所了解到的情况 图像空间中的平移会导致相位差异 但不会导致频率空间中的幅度差异 我试图用一个小例子来演示这一点 但它只适用于行的移位 而不适用于列的移位 这是一个小演示 我只在这里显示幅
  • 同时重新排序和旋转图像的高效方法

    为了快速加载 jpeg 我为turbojpeg 实现了一个 mex wrapper 以有效地将 大 jpeg 读入 MATLAB 对于 4000x3000px 的图像 实际解码只需要大约 120 毫秒 而不是 5 毫秒 然而 像素顺序是 R
  • 为什么matlab的mldivide比dgels好这么多?

    Solve Ax b 真正的双 A是超定的 Mx2 其中 M gt gt 2 b是MX1 我运行了大量的数据mldivide 并且结果非常好 我用 MKL 写了一个 mex 例程LAPACKE dgels但它远没有那么好 结果有大量噪音 并
  • 频域和空间域的汉明滤波器

    我想通过在 MATLAB 中应用汉明滤波器来消除一维信号中的吉布斯伪影 我所拥有的是k1这是频域中的信号 我可以通过应用 DFT 来获取时域信号k1 s1 ifft ifftshift k1 该信号具有吉布斯伪影 现在 我想通过 A 乘以汉
  • 单元格的 Fieldnames 函数的等效项

    正如标题所说 只是想知道是否有一个函数可以用作字段名 http www mathworks co uk help matlab ref fieldnames html 但适用于单元格 所以如果我有类似的东西 a imread redsqua
  • 如何在Matlab中将世界坐标转换为像素索引

    我有 512x512x313 体积的 dicom 图像 并且我有一个以世界坐标表示的点 57 7475 63 4184 83 1515 我如何在 Matlab 中获得该世界坐标的相应像素坐标 我不想戳破你的幻想 但你所要求的是不可能的 我能
  • 为什么 MATLAB 本机函数 cov(协方差矩阵计算)使用与我预期不同的除数?

    给定一个 M 维和 N 个样本的数据矩阵数据 例如 data randn N M 我可以计算协方差矩阵 data mu data ones N 1 mean data cov matrix data mu data mu N 如果我使用原生
  • 如何每次使用按钮将数据添加到 MATLAB 中的现有 XLSX 文件?

    我有一个函数可以生成一些变量 例如分数 对 错 未回答 使用按钮调用此功能 问题是如何每次将函数生成的这些值添加 附加到 XLSX 文件中 或者 如何创建 MAT 文件以便可以添加它 可能的解决方案是什么 附加到 xls 文件所涉及的挑战是
  • 使用 R2010b 中的符号工具箱来求解和/或 linsolve

    我前几天问了一个问题here https stackoverflow com questions 20317038 matlab linear congruence solver that supports a non prime modu
  • 垂直子图的单一颜色条

    我想让下面的 MATLAB 图有一个沿着两个子图延伸的颜色条 像这样的事情 使用图形编辑器手动完成 Note 这与提出的问题不同here https stackoverflow com questions 39950229 matlab t
  • 检查图像中是否有太薄的区域

    我正在尝试验证雕刻机的黑白图像 更多的是剪贴画图像 不是照片 我需要考虑的主要事情之一是区域的大小 或线条的宽度 因为机器无法处理太细的线条 所以我需要找到比给定阈值更细的区域 以此图为例 竖琴的琴弦可能太细而无法雕刻 我正在阅读有关 Ma
  • 直方图均衡结果

    I am trying to code histogram equalization by my self but the results are different from the built in function in matlab
  • 如何使用Matlab将数据保存到Excel表格中?

    我想将数据以表格形式保存在 Excel 工作表中 它应该看起来像 Name Age R no Gpa Adnan 24 18 3 55 Ahmad 22 12 3 44 Usman 23 22 3 00 每次当我执行我的文件时类数据 m 下
  • Matlab 图像数据的 hist 函数

    我是 Matlab 新手 我想制作自己的函数 与 imhist 显示图像数据的直方图 完成相同的工作 但我对此完全是新手 我不知道如何做开发这样的功能 我开始做一些东西 但它非常不完整 function output args myhist
  • 以 2 为底的矩阵对数

    Logm 取矩阵对数 并且log2 取矩阵每个元素以 2 为底的对数 我正在尝试计算冯 诺依曼熵 它涉及以 2 为底的矩阵对数 我该怎么做呢 如果将 以 2 为底 的矩阵指数定义为B expm log 2 A 或者如果您类似地通过特征分解直
  • 禁止 MATLAB 自动获取焦点[重复]

    这个问题在这里已经有答案了 我有以下问题 在我的 MATLAB 代码中 我使用如下语句 figure 1 更改某些数据的目标数字 问题是 在此 MATLAB 之后 系统将焦点集中在具有该图形的窗口上 当我在后台运行一个大脚本并尝试在计算机上
  • 将 Matlab 数组移植到 C/C++

    我正在将 matlab 程序移植到 C C 我有几个问题 但最重要的问题之一是 Matlab 将任何维度的数组都视为相同 假设我们有一个这样的函数 function result f A B C result A 2 B C A B and
  • MATLAB - 通过垂直连接子矩阵重新排列矩阵

    我在执行以下任务时遇到问题 假设一个 3x6 矩阵 A 0 2787 0 2948 0 4635 0 8388 0 0627 0 0435 0 6917 0 1185 0 3660 0 1867 0 2383 0 7577 0 6179 0

随机推荐

  • 网络收集的逻辑思维题

    一个有意思的逻辑训练题目 题目如下 有两个大于1小于100的自然数x y 老师告诉小明两个数的和 告诉小强两个数的积 已知小明和小强足够聪明 下面是两个人的对话 小强 我不知道这两个数是多少 lt 沉默中 gt 小明 我知道你不知道 我不知
  • 设计模式--组合模式

    组合模式 又叫部分整体模式 属于结构型模式 基本原理 以树形的结构将相似的对象组合起来 主要流程 1 创建对象 2 在对象中设置用来存放下一级相似对象的数据结构 3 在对象中设置增删改查等功能 注意 这种模式和数据结构中的树形结构相似 in
  • Spring-OSGI 1.0 M3 中文手册(Spring Dynamic Modules Reference Guide for OSGi(tm) Service Platforms)

    Spring OSGI 1 0 M3 中文手册 Spring Dynamic Modules Reference Guide for OSGi tm Service Platforms Spring Dynamic Modules Refe
  • scrapy-单线程爬取并存入mwsql

    scrapy基本结构 爬取流程 定义随机请求头 抓取异步网页请参考 scrapy框架 基础结构加爬取异步加载数据的网址项目完整实例 items py class BooksItem scrapy Item define the fields
  • 任务五:使用LightGBM对数据进行分类并评估

    1 对前几部得到的特征进行分类 主要用到sklearn中的LightGBM进行评估 并用网格搜索进行参数调优 2 Lightgbm是2017年在当时的NeurIPS 当时为NIPS 上发表的论文 文中主要是相比于XGBoost LightG
  • 前端面试的话术集锦第 18 篇博文——高频考点(HTTP协议 & TLS协议)

    这是记录前端面试的话术集锦第十八篇博文 高频考点 HTTP协议 TLS协议 我会不断更新该博文 1 HTTP 请求中的内容 HTTP请求由三部分构成 分别为 请求行 首部 实体 请求行大概长这样GET images logo gif HTT
  • 基于QT学习,小部件自适应QMainWindow窗口的大小

    基于QT学习 小部件自适应QMainWindow窗口的大小 使用QT Creator创建桌面QT应用 QT5 网上找了许多资源发现都不是自己想要的效果 本文的方法是使用纯代码写的 未使用mainwindow ui画的 第一次写博客 直接贴代
  • 文心一言与GPT-4比对测试!

    Waitlist了三个星期 今天下午终于拿到了百度文心一言的体验资格 于是立刻展开测试 根据文心一言网页端信息显示 目前最新发版是4月1号的版本 版本号是v1 0 3 应该是从上个月16号发布会以后又做了两版迭代 根据文心一言自己的回答 可
  • OkHttp工具类在微服高并发场景中问题实践总结

    OkHttp工具类在微服高并发场景中问题实践总结 问题场景 我的应用是一个中间业务应用XXApp 一个交易请求进来需要依赖下游应用 采用http协议通讯方式 需要调用3 4次下游请求 老XXApp在生产上有大量Close wait问题 可以
  • 怎么用python画sin函数图像_如何使用python的matplotlib模块画正弦函数图像

    python是一个很有趣的语言 可以在命令行窗口运行 python中有很多功能强大的模块 这篇经验告诉你 如何利用python的matplotlib模块 绘制正弦函数y sin x 的图像 工具 原料 windows系统电脑一台 pytho
  • Android 实战项目分享(一)用Android Studio绘制贝塞尔曲线的艺术之旅

    一 项目概述 欢迎来到创意之源 我们精心打造的绘图应用程序将带你进入一个充满艺术和技术的奇妙世界 通过使用Android Studio 我们实现了绘制贝塞尔曲线的功能 让你能够轻松创作出令人惊叹的艺术作品 不论你是热爱绘画的大学生还是渴望学
  • SyntaxError: can't assign to operator

    变量名不能有
  • 计算机图像视频处理

    计算机图像视频处理 计算机视觉概论 计算机视觉概念 计算机图像处理 也即数字图像处理 Digital Image Processing 是指将图像信号转换成数字信号并利用计算机对其进行处理的过程 是通过计算机对图像进行去除噪声 增强 复原
  • CVPR 2018

    感谢阅读腾讯 AI Lab 微信号第 32 篇文章 CVPR 2018上涌现出非常多的优秀论文 腾讯 AI Lab 对其中精华文章归类与摘要 根据受关注程度 对生成对抗网络 视频分析与理解和三维视觉三大类论文进行综述 第一部分 生成对抗网络
  • 强网杯 2019]随便注 【SQL注入】四种解法

    题目简介 题目名称 强网杯 2019 随便注 1 题目平台 BUUCTF 题目类型 Web 考察知识点 SQL注入 解题步骤 方法一 首先启动并访问靶机 有一个输入框 随便输入1 or 1 1 测试一下是否存在sql注入 提交后提示erro
  • 前端八股文-Nodejs介绍,组成,架构和依赖,特点,运行环境安装,包和NPM,NPM包的版本管理,V8 引擎 和 libuv 库,BFF 中间层,服务端渲染,

    01 Node js介绍 前言 Node 的重要性已经不言而喻 很多互联网公司都已经有大量的高性能系统运行在 Node 之上 Node 凭借其单线程 异步等举措实现了极高的性能基准 此外 目前最为流行的 Web 开发模式是前后端分离的形式
  • 一文搞定Mysql+Navicat16长期免费直连数据库安装教程

    一 Mysql安装包的下载 这里下载的是mysql8版本 第一个安装包比较小 第二个安装包比较大 因为包含调试工具 我这里下载的是第一个 二 解压并配置安装目录 这里浏览器默认的下载路径是TempEdgeDownload 把解压后的文件夹移
  • Bison解析sql

    Bison文件组成 主要分为3部分 1 序言 Prologue 声明全局标识符 定义数据类型 变量和宏 包含头文件 等 声明 declarations 声明终结符 非终结符 运算符的优先级 符号语义值的各种类型 2 语法 Grammar r
  • 3500+人工智能公司“大阅兵”,地表最强AI人才都去了哪里

    图片来源 由无界AI生成 作者 Lightspeed 编译 椎名 编辑 Zuri 人人都想拥有属于自己的生成式AI工具 但是全球只有极少人 能够真正构建出大型语言模型 新的AI应用基础设施和支持技术 这不但需要一套新的 特殊的技术能力 更需
  • 非线性拟合lsqcurvefit、nlinfit

    问题 有些时候我们需要拟合一些非线性的表达式 比如 我们知道一个表达式的式子是y A sin x exp x B log x 现在我们手里面有x与y对应的一大把数据 我们如何根据x y的值找出最佳的A B值 则我们现在借助Matlab的函数