求教cftool拟合出函数opencv 曲线拟合函数后,如何直接显示函数表达式

推荐这篇日记的豆列
&&&&&&&&&&&&查看: 2268|回复: 4|关注: 0
使用cftool曲线拟合自定义函数后参数导出问题
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
大家好,我用cftool工具拟合一万组数据,而且用自定义函数拟合,想要得到三个参量,比如y=a/(((x-b)/(c/2))^2+1),每组数据用这个公式得到a,b,c三个参数。但是一万组数据的话,用循环怎么才能得到这一万组数据多对应的一万组a,b,c呢,结果怎么显示出来?谢谢
论坛优秀回答者
<h1 style="color:#0 麦片财富积分
关注者: 73
1stOpt可以很方便实现这种循环计算,编程简单,不需初值,比Matlab好用强大的多,可以试试。
<h1 style="color:# 麦片财富积分
1stOpt可以很方便实现这种循环计算,编程简单,不需初值,比Matlab好用强大的多,可以试试。 ...
额,谢谢。可是我这是毕设中的一个小问题。。。老师要求的用matlab的cftool。。。
<h1 style="color:# 麦片财富积分
好不容易找到了一个和我的问题很相似的,但是发现没有人接大:L
<h1 style="color:# 麦片财富积分
小白路过,不知道什么意思,看看有没有大佬
站长推荐 /2
利用MATLAB进行传感器数据分析
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区小木虫 --- 600万学术达人喜爱的学术科研平台
热门搜索:
&&查看话题
曲线拟合的问题,实在找不到曲线拟合表达式,求解
昨天遇到一组实验数据,想拟合得到表达式求最大值,结果用origin和1stOpt(刚学)折腾了一天都没搞定。虽然这种具体问了有偷懒嫌疑,但折腾了两天的人因为论文提交迫在眉睫实在拖不起了,故来版上请教高手。
图像如下:
数据如附件
ps:由于我的最后目的是峰值,所以附件数据可以根据需要删减.
谢谢您提供的思路,我回去搜索下看插值怎么做
我刚用cftool 进行smoothing spline, 那下一步该怎么做呢?
如果求出拟合曲线上特定点
m文件如下,复制到MATLAB的m文件中,运行即可,计算结果见附图1。
function chazhi314
format long
%---------------原始实验数据----------------------------------------------
%---------------------------------------------------------------------
x=data1(:,1);
y=data1(:,2);
dx=1e-6;&&%控制插值精度
%---------------------------------------------------------------------
y1=spline(x,y,x1);
yobj=max(y1);
=find(y1==yobj);
xobj=x1(yi);
fprintf('\t插值求得最大值处 x = %.6f\n',xobj);
fprintf('\t插值求得最大值 y = %.9f\n',yobj);
plot(x,y,'b-',xobj,yobj,'or'),legend('实验值','插值所得最大值','Location','best');
非常感谢楼上~~ 我用cftool到中间正不知该怎么办呢
学术必备与600万学术达人在线互动!
扫描下载送金币3077人阅读
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 &#39;untitled fit 1&#39; fit:
X Input : x
Y Output: y
fitresult : a fit object representing the fit.
gof : structure with goodness-of fit info.
另请参阅 FIT, CFIT, SFIT.
由 MATLAB 于 22-Dec-:49 自动生成
%% Fit: &#39;untitled fit 1&#39;.
[xData, yData] = prepareCurveData( x, y );
% Set up fittype and options.
ft = fittype( &#39;smoothingspline&#39; );
% Fit model to data.
[fitresult, gof] = fit( xData, yData, ft );
% Plot fit with data.
figure( &#39;Name&#39;, &#39;untitled fit 1&#39; );
h = plot( fitresult, xData, yData );
legend( h, &#39;y vs. x&#39;, &#39;untitled fit 1&#39;, &#39;Location&#39;, &#39;NorthEast&#39; );
% Label axes
xlabel( &#39;x&#39; );
ylabel( &#39;y&#39; );
也就是说,其实也可以通过编写函数来实现拟合平滑曲线,但是由cftool工具箱导出的代码可以减少自己的工作量,减少由于MATLAB语言不熟练导致效率低下的工作。
之后在这个m文件的适当位置加入拟合多条曲线的代码,就可以实现与cftool拟合平滑曲线效果相同的多条曲线了。
以下是我修改的代码,注意注释。
function [fitresult, gof] = e1(x, y, x1, y1, x2, y2)
%将需要绘制图像的数据加入参数中
%CREATEFIT(X,Y)
Create a fit.
Data for &#39;untitled fit 1&#39; fit:
X Input : x
Y Output: y
fitresult : a fit object representing the fit.
gof : structure with goodness-of fit info.
另请参阅 FIT, CFIT, SFIT.
由 MATLAB 于 21-Dec-:33 自动生成
%% Fit: &#39;untitled fit 1&#39;.
[xData, yData] = prepareCurveData( x, y );
[xData1, yData1] = prepareCurveData( x1, y1 );&span style=&white-space:pre&& &/span&%第二条曲线需要的代码,注意改变参数
[xData2, yData2] = prepareCurveData( x2, y2 );&span style=&white-space:pre&& &/span&%第三条曲线需要的代码,注意改变参数
% Set up fittype and options.
ft = fittype( &#39;smoothingspline&#39; );&span style=&white-space:pre&&
&/span&%顾名思义,将拟合方式设置为光滑曲线
% Fit model to data.
[fitresult, gof] = fit( xData, yData, ft );
[fitresult1, gof1] = fit( xData1, yData1, ft );&span style=&white-space:pre&& &/span&%第二条曲线需要的代码,注意改变参数
[fitresult2, gof2] = fit( xData2, yData2, ft );&span style=&white-space:pre&& &/span&%第三条曲线需要的代码,注意改变参数
% Plot fit with data.
figure( &#39;Name&#39;, &#39;fit 1&#39; );
h = plot( fitresult, xData, yData );
&span style=&white-space:pre&&
&/span&%加入hold on 可以使之后的曲线画在同一张图中
h1 = plot( fitresult1, xData1, yData1, &#39;o&#39;
);&span style=&white-space:pre&& &/span&%绘制第二条曲线,注意参数
&span style=&white-space:pre&&
&/span&%作用同上
h2 = plot( fitresult2, xData2, yData2, &#39;o&#39;
);&span style=&white-space:pre&& &/span&%绘制第三条曲线,注意参数
% Label axes
xlabel( &#39;x&#39; );
ylabel( &#39;y&#39; );
保存之后,在命令行窗口中运行该m函数文件,即可得到在一张图中同时拟合三条光滑曲线。
同理,其他拟合方式也可以使用相同的方式达到多条曲线同时拟合的图像。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5536次
排名:千里之外}

我要回帖

更多关于 matlab曲线拟合函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信