文章目录

  • 简单的拟合
  • 批量拟合并呈现在一张图上
  • 最终结果与完整代码

简单的拟合

在命令行输入

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');
%表格形式是70行2列(每组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

得到图:

我们发现颜色不够好看,可以在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:70mx = 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

Matlab批量拟合曲线并绘制在一张图上相关推荐

  1. 如何用matlab画道路,MATLAB中如何将多条曲线画在一张图上

    在用MATLAB处理数据时,有时候,为了几组不同数据之间的对比,我们需要将几组数据对应的曲线画在一张图上,该怎么处理呢? 首先,我们随机产生三组范围不同的数据,数据量都为500,他们的边界分别为[10 ...

  2. matlab两个曲线的名称怎么显示出来的,求MATLAB的高手,怎么把两张仿真曲线合并显示在一张图上?...

    求MATLAB的高手,怎么把两张仿真曲线合并显示在一张图上? 关注:194  答案:5  手机版 解决时间 2021-02-10 14:48 提问者终究是陌生了 2021-02-09 16:38 程序 ...

  3. MATLAB三维绘图(四)绘制特殊的三维图

    MATLAB三维绘图(四)绘制特殊的三维图 1.使用pie3绘制三维饼状图,示例: %% 绘制三维饼图 clear all; x=[0.2 0.1 0.25 0.15 0.16]; y=[3 5.5 ...

  4. python Matplotlib 可视化总结归纳(二) 绘制多个图像单独显示多个函数绘制于一张图

    1. 绘制多个图像单独显示(subplot) import numpy as np import matplotlib.pyplot as plt #创建自变量数组 x= np.linspace(0, ...

  5. python 将多个模型的ROC曲线绘制在一张图里(含图例)

    一. 多条ROC曲线绘制函数 def multi_models_roc(names, sampling_methods, colors, X_test, y_test, save=True, dpin ...

  6. matlab 速度 流场变化,[MATLAB基础] 请问怎样将两结果(流场速度和线形态)叠加到一张图上?...

    请问怎样将两结果(流场速度和线形态)叠加到一张图上? 我已分别计算出流场速度和线的运动形态,都是三维的.其中流场速度是用CFD软件算的,而线的形态是在MATLAB里编程算的,现想把两结果表示在同一张图 ...

  7. Matlab在一张图上画多条曲线或分别画

    1.在plot曲线时,有时想在一张图上重合画多条曲线,我们只需要在画图命令之前加上hold on就好,比如: t = 1:0.1:10: y1 = sin(2*pi*t); y1 = cos(2*pi ...

  8. 【Python画图01】一张图上两条线,坐标图例设置

    一.学习背景 最近在学习python制图,准备做个模板好出图 目录 一.学习背景 二.参考 三.代码学习 1.figure语法说明 2. 一张图上2条线 3. 坐标轴取值范围.坐标轴标题.坐标轴小标 ...

  9. 把多个ROC曲线画在一张图上

    为了展示实验效果,ROC曲线也能更直观的展示而且美观.所以我想画出ROC曲线.下面是两个方法:1)只画一个ROC曲线,2)多个ROC曲线展示在一张图上. 注:我是已经有y-pred,所以直接用即可,不 ...

最新文章

  1. 在MySQL数据库中,这4种方式可以避免重复的插入数据!
  2. androidwakelock_Android音频播放时wakelock的实现
  3. MySQL 5.6通过Keepalived+互为主从实现高可用架构
  4. 跨网段实现内网互通_【供暖站组网】冠航SD-LAN助力河北石家庄市30个供暖站异地组网实现内网互联互通...
  5. Linux下的图形界面编程
  6. 机器学习常用的算法整理:线性回归、逻辑回归、贝叶斯分类、支持向量机、K-means聚类、决策树、随机森林以及常用的应用场景整理
  7. c++二叉树的层序遍历_leetcode 103. 二叉树的锯齿形层序遍历
  8. 从零开始搭建口袋妖怪管理系统(3)-实现一个简单的SPA管理系统
  9. 2复数与复变函数(二)
  10. SetLayeredWindowAttributes 设置窗口透明
  11. [日常] Go语言圣经-GIF动画练习语法
  12. 如何安装.net framework?Win11安装net framework的方法
  13. Python自定义模块
  14. java语言数据库课程设计_数据库课程设计 人事管理系统 (一)
  15. 前端学习——页面布局
  16. 密码的输入问题(do while()和st1.equals(st2)的使用)
  17. 2-13 monthCalendar日历控件
  18. 小米平板4 android版本,小米平板4-4plus
  19. 速途网范锋:重要合作可能决定网络企业生死
  20. Configuring Add-on Service

热门文章

  1. 【翻译】‘BadRabbit’ Ransomware Burrows Into Russia, Ukraine
  2. Windows7虚拟机无法安装 VMware Tools简单解决方法
  3. 做了个隐藏进程跟保护进程的小工具
  4. 怎样修复AirPods和AirPods Pro中的失真?
  5. 查看debian 版本和KDE还是Gnome
  6. iOS VoiceOver编程指南
  7. JQuery攻略(四)事件
  8. g2o的安装及初步使用
  9. 课工场互联网营销学院是什么?
  10. linux禁止客户端上传文件_SVN客户端使用(Linux)及问题排查