MATLAB中自带的cftool拟合工具箱不能将多条曲线同时画在同一副图中,而常规的plot()函数又不能拟合平滑直线,接下来总结一种可以利用cftool导出的代码,在一张图中拟合多条平滑曲线。

首先输入所要拟合的数据,如x, y, x1, y1, x2, y2等等。

之后打开cftool工具箱,使用数据拟合曲线,在拟合方式一栏选择Smoothing Spline。可以得到图像。

之后在文件菜单栏中点击Generate Code,之后将在工作空间里看到导出的m文件。

function [fitresult, gof] = createFit(x, y)
%CREATEFIT(X,Y)
%  Create a fit.
%
%  Data for 'untitled fit 1' fit:
%      X Input : x
%      Y Output: y
%  Output:
%      fitresult : a fit object representing the fit.
%      gof : structure with goodness-of fit info.
%
%  另请参阅 FIT, CFIT, SFIT.%  由 MATLAB 于 22-Dec-2015 00:27:49 自动生成%% Fit: 'untitled fit 1'.
[xData, yData] = prepareCurveData( x, y );% Set up fittype and options.
ft = fittype( 'smoothingspline' );% Fit model to data.
[fitresult, gof] = fit( xData, yData, ft );% Plot fit with data.
figure( 'Name', 'untitled fit 1' );
h = plot( fitresult, xData, yData );
legend( h, 'y vs. x', 'untitled fit 1', 'Location', 'NorthEast' );
% Label axes
xlabel( 'x' );
ylabel( 'y' );
grid on

也就是说,其实也可以通过编写函数来实现拟合平滑曲线,但是由cftool工具箱导出的代码可以减少自己的工作量,减少由于MATLAB语言不熟练导致效率低下的工作。

之后在这个m文件的适当位置加入拟合多条曲线的代码,就可以实现与cftool拟合平滑曲线效果相同的多条曲线了。

以下是我修改的代码,注意注释。

function [fitresult, gof] = e1(x, y, x1, y1, x2, y2)     %将需要绘制图像的数据加入参数中
%CREATEFIT(X,Y)
%  Create a fit.
%
%  Data for 'untitled fit 1' fit:
%      X Input : x
%      Y Output: y
%  Output:
%      fitresult : a fit object representing the fit.
%      gof : structure with goodness-of fit info.
%
%  另请参阅 FIT, CFIT, SFIT.%  由 MATLAB 于 21-Dec-2015 23:23:33 自动生成%% Fit: 'untitled fit 1'.
[xData, yData] = prepareCurveData( x, y );
[xData1, yData1] = prepareCurveData( x1, y1 );%第二条曲线需要的代码,注意改变参数
[xData2, yData2] = prepareCurveData( x2, y2 );%第三条曲线需要的代码,注意改变参数% Set up fittype and options.
ft = fittype( 'smoothingspline' );%顾名思义,将拟合方式设置为光滑曲线% Fit model to data.
[fitresult, gof] = fit( xData, yData, ft );
[fitresult1, gof1] = fit( xData1, yData1, ft );%第二条曲线需要的代码,注意改变参数
[fitresult2, gof2] = fit( xData2, yData2, ft );%第三条曲线需要的代码,注意改变参数% Plot fit with data.
figure( 'Name', 'fit 1' );
h = plot( fitresult, xData, yData );
hold on;%加入hold on 可以使之后的曲线画在同一张图中
h1 = plot( fitresult1, xData1, yData1, 'o'  );%绘制第二条曲线,注意参数
hold on;%作用同上
h2 = plot( fitresult2, xData2, yData2, 'o'  );%绘制第三条曲线,注意参数
hold on;% Label axes
xlabel( 'x' );
ylabel( 'y' );
grid on

保存之后,在命令行窗口中运行该m函数文件,即可得到在一张图中同时拟合三条光滑曲线。

同理,其他拟合方式也可以使用相同的方式达到多条曲线同时拟合的图像。

MATLAB中利用cftool导出代码实现一张图中拟合多条平滑曲线相关推荐

  1. MVC5中利用NOPI导出EXCLE

    MVC5中利用NOPI导出EXCLE //导出excle 设备效率public JsonResult Exporta(){var jser = new JavaScriptSerializer();s ...

  2. matlab在一张图上画两条折线图,excel2013怎么在一张曲线图上绘制多条曲线?

    office软件每年的更新速度很快,虽然更新后的版本肯定能够实现更新前的功能,但是由于版式方面的改进,使得使用者初次使用时不是特别得心应手.下面重点讲述一下,如何利用excel2013在同一张图中做多 ...

  3. LeetCode 2065. 最大化一张图中的路径价值

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   给你一张无向图,图中有 ...

  4. python 子图_python 实现在一张图中绘制一个小的子图方法

    有时候为了直观展现图的信息,可以在大图中添加小子图的方式进行数据分析,如下图所示: 具体的代码如下:该图连接了数据库,当然重要的不是数据展示,而是添加子图的方法. import matplotlib. ...

  5. python画50个图-python 实现在一张图中绘制一个小的子图方法

    有时候为了直观展现图的信息,可以在大图中添加小子图的方式进行数据分析,如下图所示: 具体的代码如下:该图连接了数据库,当然重要的不是数据展示,而是添加子图的方法. import matplotlib. ...

  6. python画简便的图-python 实现在一张图中绘制一个小的子图方法

    有时候为了直观展现图的信息,可以在大图中添加小子图的方式进行数据分析,如下图所示: 具体的代码如下:该图连接了数据库,当然重要的不是数据展示,而是添加子图的方法. import matplotlib. ...

  7. python一张图-python 实现在一张图中绘制一个小的子图方法

    有时候为了直观展现图的信息,可以在大图中添加小子图的方式进行数据分析,如下图所示: 具体的代码如下:该图连接了数据库,当然重要的不是数据展示,而是添加子图的方法. import matplotlib. ...

  8. R语言使用scatterplot3d包的scatterplot3d函数可视化3D散点图(3D scatter plots)、在3D散点图中添加垂直线和数据点描影、3D图中添加回归平面

    R语言使用scatterplot3d包的scatterplot3d函数可视化3D散点图(3D scatter plots).在3D散点图中添加垂直线和数据点描影.3D图中添加回归平面(overlaid ...

  9. R语言可视化包ggplot2在一张图中画出两条线实战

    R语言可视化包ggplot2在一张图中画出两条线实战 目录 R语言可视化包ggplot2在一张图中画出两条线实战

最新文章

  1. 腾讯云IoT全栈方案助力智慧交通基建,详解四大重点与两个案例
  2. eclipse+ADT 进行android应用签名详解
  3. python3.9新特性_Python3.9又更新了:dict内置新功能
  4. Java基础小常识-final,抽象类,接口-(11)
  5. 你必须知道:localStorage、sessionStorage 和 Cookie 区别在什么地方
  6. 随笔——我悄悄地更新了我的博客
  7. P6647 [CCC 2019] Tourism
  8. 第二课:更换国内下载源(阿里源为例)
  9. 【 微软 2023校园招聘倒计时3天】
  10. 链塔短评合集| XAS、ARDR为BB级,LSK为B级
  11. android系统 PowerManager深入分析(非常详细)
  12. 实用 Windows 软件系列分享(六)
  13. 派克Parker防爆伺服电机与普通伺服电机区别
  14. 虚幻引擎UWorld::Tick反汇编代码
  15. CSDN送了我一本书:《写作脑科学》| 记我与写博客
  16. 全球与中国GNSS惯性导航系统市场现状及未来发展趋势
  17. 速达软件二次开发-销售开单结算单位和账期报表需求
  18. 渗透测试中常见的一些名词解释
  19. django: ImportError: cannot import name ‘render_to_response‘ 解决方法
  20. Android wifi iw介绍

热门文章

  1. mbedtls安装与入门
  2. Mysql学习代码笔记
  3. 【C语言】如何去求最大公约数和最小公倍数?
  4. 代码风格检查工具vera++
  5. 指针:const与指针
  6. MySQL-SQL语句的优化
  7. 俄勒冈健康与科学大学计算机,俄勒冈健康与科学大学有何优势
  8. MySQL、SqlServer、Oracle 三种数据库的优缺点总结
  9. echart横轴文字显示省略号_Echarts X轴内容过长自动隐藏,鼠标移动上去显示全部名称方法...
  10. windows触发器运行python脚本报错0x1问题解决办法