MATLAB拟合函数使用说明 |
您所在的位置:网站首页 › 函数拟合什么意思 › MATLAB拟合函数使用说明 |
(由于不方便上传公式,有部分直接截图)
2. Polyval函数 对应多项式拟合,多项式求值函数也相当重要,可以通过设定向量,快速定义如下多项式 据此,可以大概猜测到polyval调用的形式了 y = polyval(p,x) 如上所述 [y,delta] = polyval(p,x,S) S即为polyfit函数返回的误差估计,具体delta的数学意义本人暂时不清楚 y = polyval(p,x,[],mu)
[y,delta] = polyval(p,x,S,mu)
结合polyfit的例子,可以尝试将拟合曲线画出来 x = -10 : 0.2 : 10; y = 0.59*x.*x + 1.4*x+2+2*(rand(1,length(x))-0.5); plot(x,y,‘.’) [p, S] = polyfit(x,y,2) yfit = polyval(p,x); hold on plot(x,yfit, ‘r’); 结果如下图 1. Fittype函数:满足自定义复杂的拟合公式 使用fittype函数可以自定义拟合函数,可以满足线性拟合和非线性拟合。Fittype函数具有很灵活的配置,基本满足各种复杂场景,有相应的cftool工具箱。这里简要的介绍一下fittype的使用方式 aFittype = fittype(libraryModelName) Fittype = fittype(expression) 使用如上两种方式,可以使用MATLAB已经实现的拟合算法或者使用自定义的拟合算法(可以引用.m文件),具体算法有‘poly11’,‘poly2’,‘linearinterp’等,具体详见fittype的文档说明。 Fittype = fittype(expression,Name,Value) constructs the fit type with additional options specified by one or more Name,Value pair arguments. 这是常用公式,使用如下 g = fittype(‘a*time^2+b*time+c’,’independent’,’time’,’dependent’,’height’); 可以制定拟合公式,变量和因变量, g = General model: g(a,b,c,time) = a*time^2+b*time+c
使用fittype拟合polyfit例子的数据,如下 ftype = fittype(‘a*x.^2+b*x+c’, ‘independent’, ‘x’, ‘dependent’, ‘y’); pf = fit(x’,y’,ftype) 结果如下 >> pf = General model: pf(x) = a*x.^2+b*x+c Coefficients (with 95% confidence bounds): a = 0.5888 (0.585, 0.5927) b = 1.398 (1.377, 1.418) c = 2.04 (1.865, 2.216) 给出95%的置信率。 如果x为行向量,则如下报错 Error using fit>iFit (line 127) X must be a matrix with one or two columns.
结合上述几个函数,我们做一个逻辑回归的sigmoid函数拟合,具体场景见《分类算法之逻辑回归》 x=2:2:20; %月薪 y=[zeros(1,5) ones(1,5)]; %满意度 %简单的线性拟合 p1=polyfit(x,y,1); %高阶线性拟合 p5=polyfit(x,y,5); %sigmoid函数拟合 sf=fittype(‘1/(1+exp(-a*(x-10)))’, ‘independent’, ‘x’); ps=fit(x’,y’,sf)
%拟合结果展示 figure plot(x,y,‘o’) hold on xp=linspace(min(x), max(x)); y1=polyval(p1,xp); y5=polyval(p5,xp); ys=1./(1+exp(-ps.a*(xp-10))); plot(xp, y1, ‘r’); plot(xp, y5, ‘g’); plot(xp, ys, ‘k’); hold off
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |