Matlab批量拟合曲线并绘制在一张图上

2023-11-14

简单的拟合

在命令行输入

cftool

可以启动工具箱
在这里插入图片描述
1.在"选择数据"中导入数据
2.选择拟合方法(matlab提供的方法或者你自己定义的函数)
matlab提供的方法:
在这里插入图片描述

自定义函数:(点击自定义方程后在右边的界面输入)
在这里插入图片描述

批量拟合并呈现在一张图上

实际处理时,我们经常遇到批量拟合并绘制曲线的情况。
比如给定10组数据,每组7个点,现在需要在一张图上绘制10条拟合曲线。应该如何绘制?
以平滑样条方法为例:
首先,指定平滑参数可以调整拟合程度和粗糙程度。
1.输入cftool打开工具箱,只选取选取一组数据拟合
在这里插入图片描述
2.点击生成代码在这里插入图片描述
3.查看代码并做修改

function [fitresult, gof] = createFit1(tx, ty)
%CREATEFIT1(TX,TY)
%  创建一个拟合。
%
%  要进行 '无标题拟合 1' 拟合的数据:
%      X 输入: tx
%      Y 输出: ty
%  输出:
%      fitresult: 表示拟合的拟合对象。
%      gof: 带有拟合优度信息的结构体。
%
%  另请参阅 FIT, CFIT, SFIT.



%% 拟合: '无标题拟合 1'[xData, yData] = prepareCurveData( tx, ty );

% 设置 fittype 和选项。
ft = fittype( 'smoothingspline' );
opts = fitoptions( 'Method', 'SmoothingSpline' );
opts.SmoothingParam = 0.99545;

% 对数据进行模型拟合。
[fitresult, gof] = fit( xData, yData, ft, opts );

% 绘制数据拟合图。
figure( 'Name', '无标题拟合 1' );
h = plot( fitresult, xData, yData );
legend( h, 'ty vs. tx', '无标题拟合 1', 'Location', 'NorthEast', 'Interpreter', 'none' );
% 为坐标区加标签
xlabel( 'tx', 'Interpreter', 'none' );
ylabel( 'ty', 'Interpreter', 'none' );
grid on

函数的这个部分是一些设置:

ft = fittype( 'smoothingspline' );
opts = fitoptions( 'Method', 'SmoothingSpline' );
opts.SmoothingParam = 0.99545;

表示方法使用’SmoothingSpline’平滑样条,参数值设定为0.99545。
接下来进行改动:

首先去除这一行,这样就可以绘制在一张图上。

% 绘制数据拟合图。
figure( 'Name', '无标题拟合 1' );

然后在另一个文件中进行批量处理。(比如main函数)

%%读入数据
data = xlsread('mydata.xls');
%表格形式是702(每组7个数)
x = data(:,1);%第一列为x
y = data(:,2);%第二列为y
%%单独绘制
for i = 1:7:(70-7)
    mx = x([i:i+6],1);%7个取出一次
    my = y([i:i+6],1);%同上
    scatter(mx,my);%例如用scatter函数
    hold on;
end

得到10组散点
在这里插入图片描述更改函数:

%%单独绘制
for i = 1:7:(70-7)
    mx = x([i:i+6],1);%7个取出一次
    my = y([i:i+6],1);%同上
    createFit(mx, my)%改用上文得到的函数
    hold on;
end

得到图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/247574a9cf824b0aa10764938bd359e5.png
我们发现颜色不够好看,可以在createFit函数中做如下调整:

% 绘制数据拟合图。
col = rand(1,3);%设置随机颜色向量
h = plot( fitresult,xData, yData);
h(1).MarkerSize = 8 %更改数据点大小
h(2).Color = col;	%更改曲线颜色

h(1)对应了数据点,h(2)对应曲线,对其作相应调整。
这里将Color设置成了1*3的随机数向量,所以得到了随机颜色。也可以根据自己的需求定义自己的颜色集。

最终结果与完整代码


main函数:

data = xlsread('measure.xls');
x = data(:,1);
y = data(:,2);
for i = 1:7:70
    mx = m1([i:i+6],1);
    my = m2([i:i+6],1);
    createFit1(mx, my) 
    hold on
end

createFit函数:

function [fitresult, gof] = createFit(mx, my)
%CREATEFIT(MX,MY)
%  创建一个拟合。
%
%  要进行 '无标题拟合 1' 拟合的数据:
%      X 输入: mx
%      Y 输出: my
%  输出:
%      fitresult: 表示拟合的拟合对象。
%      gof: 带有拟合优度信息的结构体。
%
%  另请参阅 FIT, CFIT, SFIT.


%% 拟合: '无标题拟合 1'[xData, yData] = prepareCurveData( mx, my );

% 设置 fittype 和选项。
ft = fittype( 'smoothingspline' );
opts = fitoptions( 'Method', 'SmoothingSpline' );
opts.SmoothingParam = 0.9999992;

% 对数据进行模型拟合。
[fitresult, gof] = fit( xData, yData, ft, opts );

% 绘制数据拟合图。
%figure( 'Name', '无标题拟合 1' );
col = rand(1,3);
h = plot( fitresult,xData, yData);
h(1).MarkerSize = 8
h(2).Color = col;
legend( h, 'my vs. mx', '无标题拟合 1', 'Location', 'NorthEast', 'Interpreter', 'none' );
% 为坐标区加标签
xlabel( 'mx', 'Interpreter', 'none' );
ylabel( 'my', 'Interpreter', 'none' );
hold on
grid on
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matlab批量拟合曲线并绘制在一张图上 的相关文章

  • Matlab 中是否有相当于 R 的 dput() 的函数?

    Matlab 中是否有相当于 R 的 dput 的函数 dput 将 R 对象的 ASCII 文本表示形式写入文件或连接 UPDATE 1 添加了递归和对单元格的支持 UPDATE 2 添加了对结构的支持 UPDATE 3 增加了对逻辑 整
  • 一次分配多个字段的聪明方法?

    由于遗留函数调用 我有时被迫编写像这样的丑陋的包装器 function return someWrapper someField a someField a b someField b and so on realistically it
  • Matlab-如何在曲线上绘制切线

    我在 matlab 中绘制了一个图表 plot x y 我的图表有不同的斜率 我如何在每个斜率上绘制切线并计算斜率的系数 如果您没有用于绘制点的显式函数 您可以使用有限差分 http en wikipedia org wiki Finite
  • 继续在 Matlab 中一遍又一遍地播放声音?

    我正在尝试创建一个 MATLAB 程序来每隔几分钟一遍又一遍地播放声音 现在我将其设置为每隔几秒播放一次 只是为了消除系统中的一些错误 但是 当我的程序尝试重播声音时 我收到此错误 Error using gt audioplayer au
  • 如何将条形图的 XtickLabels 向左移动?

    我目前正在尝试创建频率直方图 为此 我必须创建一个条形图 条形图之间没有空格 然而 这集中于XTickLabels在酒吧的中间 由于它是一个直方图 我希望数值位于每个条形之间的线上 以便它可以直观地指示间隔 本质上 我需要将所有刻度标签移至
  • 如何在 MATLAB 中可视化球体的交集?

    似乎这个问题在一些地方被问过 包括SO https stackoverflow com questions 35130336 draws the intersecting volume of two spheres in matlab 我最
  • 如何让MCR启动时间快

    我将 matlab 程序转换为 net 程序集 即 dll 文件 我制作了一个控制台 C 应用程序 添加了 dll 文件并从 php 调用它 每次调用 exe 时都会调用 MCR 如何使 MCR 在服务器启动时初始化 并且即使在一段时间后调
  • 如何在 Matlab 中使用谷歌翻译?

    我正在编写一个程序 使用 Matlab 列出电影字幕文件中的所有唯一单词 现在我有一个独特的单词列表 我想将其翻译成我的语言并在观看电影之前了解其含义 有谁知道如何在 Matlab 中使用 Google Translate 以便完成我的脚本
  • 不等间隔时间序列的移动平均线

    我有一个证券交易所股票价格的数据集 时间 价格 但数据点之间的间隔并不相等 从 1 到 2 分钟不等 在这种情况下计算移动平均值的最佳实践是什么 如何在Matlab中实现呢 我倾向于认为 点的权重应该取决于自上一个点以来的最后时间间隔 Ma
  • 句柄类和值类的区别

    我有一些 C 背景 想使用 Matlab 中的类 句柄和值类有什么区别 我知道如果我想定义一个带有重载运算符 例如 和 的矩阵类 我会使用值类 然而 有时 当我选择一个手柄类时 事情似乎只对我有用 MathWorks 提供了一些有关其用途的
  • 为什么旋转 3D 点云后顶点法线会翻转?

    我有两个人脸 3D 点云样本 蓝色点云表示目标面 红色点云表示模板 下图显示目标面和模板面在不同方向上对齐 目标面大致沿 x 轴 模板面大致沿 y 轴 Figure 1 The region around the nose is displ
  • 如何在 Matlab 中对数组应用低通或高通滤波器?

    有没有一种简单的方法可以将低通或高通滤波器应用于 MATLAB 中的数组 我对 MATLAB 的强大功能 或数学的复杂性 有点不知所措 需要一个简单的函数或一些指导 因为我无法从文档或网络搜索中找到答案 看着那 这filter http w
  • 两个向量之间的欧氏距离(单行矩阵)

    我有两个向量 单行矩阵 假设我们已经知道长度len A x1 x2 x3 x4 x5 B y1 y2 y3 y4 y5 计算它们之间的欧几里德距离最快的方法是什么 我的第一次尝试是 diff A B sum 0 for column 1 l
  • 如何在 Matlab 中将数组打印到 .txt 文件?

    我才刚刚开始学习Matlab 所以这个问题可能非常基本 我有一个变量 a 2 3 3 422 6 121 9 4 55 我希望将值输出到 txt 文件 如下所示 2 3 3 422 6 121 9 4 55 我怎样才能做到这一点 fid f
  • 如何将二进制值列表转换为int32类型?

    我在 MATLAB 工作区中有一个小端格式的二进制数列表 我想将它们转换为 int32 a是由 0 和 1 组成的双向量 如下所示 a 0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 1 1
  • 使用符号求解器仅求解某些变量

    我正在尝试在 MATLAB 中求解包含 3 个变量和 5 个常量的方程组 是否可以使用solve求解三个变量 同时保持常量为符号而不用数值替换它们 当您使用SOLVE http www mathworks com access helpde
  • 括号中的波形符字符

    在 MATLAB 中 以下代码执行什么操作 m func returning matrix 波浪号运算符 的作用是什么 在 Matlab 中 这意味着不要将函数中相应的输出参数分配到赋值的右侧 因此 如果func returning mat
  • matlab中类库的全局变量

    我有一些matlab声明的类 我如何声明所有类中都可见的常量 例如 这些常量可以是在所有类的方法中使用的物理常量 首先想到的是使用全局变量 还有更好的办法吗 最好在单独的文件中声明这些常量 包含常量的类是执行此操作的一种很好的干净方法 请参
  • 如何找到平面和 3d 矩阵之间的交平面

    如果我有一堆图像并且尺寸如下 size M 256 256 124 我有 3 个点 它们的坐标是 coor a 100 100 124 coor b 256 156 0 coor c 156 256 0 如何创建 M 与这 3 个点定义的平
  • 如何在 MATLAB 中绘制 3D 曲面图?

    我有一个像这样的数据集 0 1 0 2 0 3 0 4 1 10 11 12 13 2 11 12 13 14 3 12 13 14 15 4 13 14 15 16 我想在 matlab 中绘制 3D 曲面图 使列标题位于 y 轴 行标题

随机推荐

  • 数据库的数据类型

    数据库技术 1 创建数据表的语法规则 CREATE TABLE lt 表名 gt lt 列名 gt lt 数据类型 gt lt 列级完整性约束条件 gt lt 列名 gt lt 数据类型 gt lt 列级完整性约束条件 gt lt 表级完整
  • Yum安装MySQL8.0版本

    文章目录 Yum安装MySQL8 0版本 实验环境 一 配置yum源 1 先备份Centos Base repo 然后从阿里云下载centos7 repo 备份本地yum源 下载阿里云的yum源 2 安装之前的环境检查 查看是否已经安装My
  • 【构建ML驱动的应用程序】第 9 章 :选择部署选项

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • rs lidar速腾激光雷达使用方法之录包及离线播放

    目录 一 录包packet 1 修改雷达参数配置config 2 录包 二 播放包 1 修改雷达参数配置config 2 编译 运行驱动 3 播放包 一 录包packet 1 修改雷达参数配置config 可以直接录制点云消息 但这种方法会
  • Python文件操作和管理指南:打开、读取、写入和管理文件

    文章目录 文件 File 打开文件 使用 with as 语句打开文件 读取文件内容 读取大文件的方式 逐行读取和读取全部行 写文件操作 文件定位 seek tell 关闭文件 文件管理 获取目录结构 获取当前目录 切换当前所在目录 创建目
  • 安装Git后所需的配置

    文章目录 前言 一 Git的配置 二 idea连接github 1 在idea中进行git的配置 2 通过账号密码或私人令牌连接GitHub 前言 上周刚接触了git遇到一些问题 今天总结一下 一 Git的配置 1 第一次安装git需要配置
  • 想让你的某个文件不被删除不被移动不被重命名吗?很简单,see it!!!

    include
  • python爬取邮件内容_python简单爬虫,抓取邮箱

    最近 老师给了一个练习是 实现一个爬虫 就爬大概100个网页 匹配出邮箱 于是 我花了几天时间 熟悉熟悉了python 就有了下面这个超级简单的爬虫程序 各种毛病 这里先说明一下 python库的安装 因为我在这上面浪费了不少时间 首先是p
  • mongodb连接报错:connect@src/mongo/shell/mongo.js:374:17

    mongodb部署在云服务器上一直可以用 今天重启了一下 不知道为什么一直连接不上 就很慌 报的这个错误代码 去百度了半天也没找到一样的情况 直接我使用了net start mongodb 整个人都傻了 mongodb需要起服务的 起了以后
  • Android LocalBroadCastManager 使用总结

    1 概述 在Android中 BroadCast是一种广泛运用的在应用程序之间传输信息的机制 我们拿广播电台来打比方 我们平常使用收音机是这样的 许多不同的广播电台通过特定的频率来发送他们的内容 而我们用户只需要将频率调成和广播电台的一样就
  • Entity Framework Core系列教程-22-跟踪实体图(TrackGraph)

    Entity Framework Core中的ChangeTracker TrackGraph 在上一章中 您了解了不同的方法为Entity Framework Core 2中的实体图的每个实体设置不同的EntityState 在这里 您将
  • 字节序转换函数

    由于主机的千差万别 主机的字节序不能做到统一 但是对于网络上传输的变量 它们的值必须有一个统一的表示方法 网络字节序是指多字节变量在网络传输时的表示方法 网络字节序采用大端字节序的表示方法 所以小端字节序的系统通过网络传输变量的时候需要进行
  • vuex刷新后数据不会保存??解决办法在此

    我们在写vue项目的时候 经常要用到vuex作为内存来储存 但是我们存放在vuex中的数据 用户数据 当前页面的数据等等 在刷新后就会丢失 那么如何解决呢 超级简单 1 安装vuex persistedstate npm install s
  • STM32串口USART1中断接收和中断发送

    先贴出中断函数 plain view plain copy void USART1 IRQHandler void IF USART GetiTStatus USART1 USART IT RXNE RESET USART ClearITP
  • vue 实现分享功能

    今天给大家分享一个vue的分享插件vshare 实现如下 1 开发环境 vue element 2 电脑系统 windows10专业版 3 组件安装 通过命令在控制台输入 npm install vshare save 4 组件导入 在ma
  • 【刷题】蓝桥杯

    蓝桥杯2023年第十四届省赛真题 平方差 C语言网 dotcpp com 初步想法 x y2 z2 y z y z 即x a b a y z b y z 2y a b 即a b是2的倍数就好了 即x存在两个因数之和为偶数就能满足条件 但时间
  • 抠矩形图程序

    根据抠图位置的起始点坐标和长宽进行矩形抠图 示例代码 原图大小为640 480 每个像素占16bit 起始点坐标 234 124 抠图长宽分别为238 282 include
  • mysql java测试_JAVA 访问MySQL数据库(使用方法及测试)

    说明 本文使用的JDBC框架是基于Java SE 1 8 MySQL Eclipse 工具下载 MySQL V5 5 x64 64位 MySQL V5 5 x86 32位 要根据你电脑的情况选择相应的MySQL版本 我的电脑是64位 所以本
  • 【牛客SQL】SQL17 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary

    题目描述 描述 有一个薪水表salaries简况如下 请你获取薪水第二多的员工的emp no以及其对应的薪水salary 示例1 输入 drop table if exists salaries CREATE TABLE salaries
  • Matlab批量拟合曲线并绘制在一张图上

    文章目录 简单的拟合 批量拟合并呈现在一张图上 最终结果与完整代码 简单的拟合 在命令行输入 cftool 可以启动工具箱 1 在 选择数据 中导入数据 2 选择拟合方法 matlab提供的方法或者你自己定义的函数 matlab提供的方法