MATLAB中利用cftool导出代码实现一张图中拟合多条平滑曲线「建议收藏」

您所在的位置:网站首页 matlab将图分开画 MATLAB中利用cftool导出代码实现一张图中拟合多条平滑曲线「建议收藏」

MATLAB中利用cftool导出代码实现一张图中拟合多条平滑曲线「建议收藏」

2023-03-25 21:20| 来源: 网络整理| 查看: 265

MATLAB中利用cftool导出代码实现一张图中拟合多条平滑曲线「建议收藏」 思创斯忠实用户-ss • 2023年3月22日 06:31 • 未分类

MATLAB中利用cftool导出代码实现一张图中拟合多条平滑曲线「建议收藏」MATLAB中自带的cftool拟合工具箱不能将多条曲线同时画在同一副图中,而常规的plot()函数又不能拟合平滑直线,接下来总结一种可以利用cftool导出的代码,在一张图中拟合多条平滑曲线。首先输入所要拟合的数据,如x,y,x1,y1,x2,y2等等。之后打开cftool工具箱,使用数据拟合曲线,在拟合方式一栏选择SmoothingSpline。可以得到图像。之后在文件

大家好,我是你的好朋友思创斯。今天说一说MATLAB中利用cftool导出代码实现一张图中拟合多条平滑曲线「建议收藏」,希望您对编程的造诣更进一步.

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

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

之后打开cftool工具箱,使用数据拟合曲线,在拟合方式一栏选择Smoothing Spline。可以得到图像。MATLAB中利用cftool导出代码实现一张图中拟合多条平滑曲线「建议收藏」

之后在文件菜单栏中点击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导出代码实现一张图中拟合多条平滑曲线「建议收藏」

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由思创斯整理,转载请注明出处:https://ispacesoft.com/110821.html

赞 (0) 思创斯忠实用户-ss思创斯忠实用户-ss 0 0 生成海报


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3