-
2021-04-21 20:51:41
出现的问题:提示拟合参数太多。请您指导,谢谢您啦!
自定义拟合函数:y = k/(1-(x/v)^m);
自变量:x;
因变量:y;
需拟合求的参数:k, v, m; 初始值分别为:0.6, 400, 0.6;
以下是数据:
266.86235 1.31743
220.67675 1.19102
202.93177 1.08869
200.17285 1.02352
186.29441 0.97621
185.58689 1.02352
214.26107 0.94542
207.00444 0.87101
138.78133 0.72
192.59403 1.08869
157.21389 0.77292
150.50928 0.77292
86.25214 0.66931
139.19936 0.65699
121.8063 0.63275
62.68215 0.63275
266.86235 1.51207
220.67675 1.30747
202.93177 1.19318
200.17285 1.0851
186.29441 0.88712
185.58689 0.84132
214.26107 0.87169
192.1437 1.0851
241.9557 0.88712
192.59403 1.05043
157.21389 0.81159
150.50928 0.78251
86.25214 0.5964
139.19936 0.69903
121.8063 0.62115
62.68215 0.57226
266.86235 1.4114
220.67675 1.24788
202.93177 1.13974
200.17285 1.05386
186.29441 0.9306
185.58689 0.92796
214.26107 0.9078
192.59403 1.06939
157.21389 0.79202
150.50928 0.7777
86.25214 0.63181
139.19936 0.67768
121.8063 0.62692
62.68215 0.60174
234.89964 1.26232
241.97025 1.20861
227.78148 1.15629
209.97758 1.12219
195.83285 1.0558
192.34325 1.0076
196.14109 0.97621
185.8807 0.90033
161.8753 0.77292
192.2004 1.0558
177.9684 0.8141
153.67586 0.80023
160.91012 0.77292
103.2452 0.5859
131.67216 0.59741
125.58693 0.59741
65.67832 0.55217
234.89964 1.28798
241.97025 1.30747
227.78148 1.17474
209.97758 1.17474
195.83285 1.05043
192.34325 0.9997
196.14109 0.95046
221.97933 1.06768
242.04403 0.88712
192.2004 1.06768
177.9684 0.7682
153.67586 0.72623
160.91012 0.69903
103.2452 0.6594
131.67216 0.75405
125.58693 0.6465
65.67832 0.5145
234.89964 1.27509
241.97025 1.25707
227.78148 1.16548
209.97758 1.14816
195.83285 1.05311
192.34325 1.00364
196.14109 0.96325
192.2004 1.06173
177.9684 0.79082
153.67586 0.76233
160.91012 0.73505
103.2452 0.62156
131.67216 0.67117
125.58693 0.62147
65.67832 0.533
更多相关内容 -
matlab三个自变量一个因变量拟合
2022-04-28 18:26:50% Input: X 自变量数据(N, D), Y 因变量(N, 1),choose 1-regress, 2-nlinfit 3-lsqcurvefit if choose==1 X1=[ones(length(X(:, 1)), 1), X]; [beta, bint, r, rint, states]=regress(Y, X1) %fit_nonlinear_data.m
function [beta, r]=fit_nonlinear_data(X, Y, choose) % Input: X 自变量数据(N, D), Y 因变量(N, 1),choose 1-regress, 2-nlinfit 3-lsqcurvefit if choose==1 X1=[ones(length(X(:, 1)), 1), X]; [beta, bint, r, rint, states]=regress(Y, X1) % 多元线性回归 % y=beta(1)+beta(2)*x1+beta(3)*x2+beta(4)*x3+... % beta—系数估计 % bint—系数估计的上下置信界 % r—残差 % rint—诊断异常值的区间 % states—模型统计信息 rcoplot(r, rint) saveas(gcf,sprintf('线性曲线拟合_残差图.jpg'),'bmp'); elseif choose==2 beta0=ones(7, 1); % 初始值的选取可能会导致结果具有较大的误差。 [beta, r, J]=nlinfit(X, Y, @myfun, beta0) % 非线性回归 % beta—系数估计 % r—残差 % J—雅可比矩阵 [Ypred,delta]=nlpredci(@myfun, X, beta, r, 'Jacobian', J) % 非线性回归预测置信区间 % Ypred—预测响应 % delta—置信区间半角 plot(X(:, 1), Y, 'k.', X(:, 1), Ypred, 'r'); saveas(gcf,sprintf('非线性曲线拟合_1.jpg'),'bmp'); elseif choose==3 beta0=ones(7, 1); % 初始值的选取可能会导致结果具有较大的误差。 [beta,resnorm,r, ~, ~, ~, J]=lsqcurvefit(@myfun,beta0,X,Y) % 在最小二乘意义上解决非线性曲线拟合(数据拟合)问题 % beta—系数估计 % resnorm—残差的平方范数 sum((fun(x,xdata)-ydata).^2) % r—残差 r=fun(x,xdata)-ydata % J—雅可比矩阵 [Ypred,delta]=nlpredci(@myfun, X, beta, r, 'Jacobian', J) plot(X(:, 1), Y, 'k.', X(:, 1), Ypred, 'r'); saveas(gcf,sprintf('非线性曲线拟合_2.jpg'),'bmp'); end end function yy=myfun(beta,x) %自定义拟合函数 yy=beta(1)+beta(2)*x(:, 1)+beta(3)*x(:, 2)+beta(4)*x(:, 3)+beta(5)*(x(:, 1).^2)+beta(6)*(x(:, 2).^2)+beta(7)*(x(:, 3).^2); end
demo.m
%x,y为离散点横纵坐标 clear clc X=[ 63.50 73.60 30.90 ; 67.90 77.90 33.20; 61.90 74.10 31.20; 64.20 76.50 32.50; 66.70 76.50 32.50]; Y=[64.00;73.80 ;65.60;70.30;69.50]; choose=1; fit_nonlinear_data(X, Y, choose)
拟合羊的体重
#重量估计,输入体高,体长,体宽,输出估计重量 #公式:y = beta(1) + beta(2) * x1 + beta(3) * x2 + beta(4) * x3 def sheep_weight_estimation(body_length,body_height,body_width): #matlab多项式拟合 k1 =-288.7822 k2 = -0.4094 k3 = 14.2552 k4 = -21.6917 sheep_weight=k1 + k2*body_height + k3*body_length + k4*body_width return sheep_weight
-
Matlab regress函数拟合多个变量分析
2021-04-18 04:16:43简介拟合曲线,在matlab中有polyfit函数,有cftool工具,对于多项式,指数,对数都有很好的拟合,但是对于多个参数的拟合,比如x1,x2……用什么函数呢?就会用到今天介绍的regress函数。regress函数调用格式b = ...声明
本文系本人原创,转载请注明出处。
简介
拟合曲线,在matlab中有polyfit函数,有cftool工具,对于多项式,指数,对数都有很好的拟合,但是对于多个参数的拟合,比如x1,x2……用什么函数呢?
就会用到今天介绍的regress函数。
regress函数
调用格式
b = regress(y,X)
[b,bint] = regress(y,X)
[b,bint,r] = regress(y,X)
[b,bint,r,rint] = regress(y,X)
[b,bint,r,rint,stats] = regress(y,X)
[...] = regress(y,X,alpha)
参数解释
B:回归系数,是个向量(“the vector B of regression coefficients in the linear model Y = X*B”)。
BINT:回归系数的区间估计(“a matrix BINT of 95% confidence intervals for B”)。
R:残差( “a vector R of residuals”)。
RINT:置信区间(“a matrix RINT of intervals that can be used to diagnose outliers”)。
STATS:用于检验回归模型的统计量。有4个数值:判定系数R^2,F统计量观测值,检验的p的值,误差方差的估计。
ALPHA:显著性水平(缺少时为默认值0.05)。
函数示例
参数都是matlab自带变量,放进去即可运行。
clc;clear all;
load carsmall
x1 = Weight;
x2 = Horsepower; % Contains NaN data
y = MPG;
X = [ones(size(x1)) x1 x2 x1.*x2];%创建常数,创建x1*x2矩阵
[b,bint,r,rint,stats] = regress(y,X)%拟合
scatter3(x1,x2,y,'filled')%散点图
hold on
x1fit = min(x1):100:max(x1);%网格范围
x2fit = min(x2):10:max(x2);
[X1FIT,X2FIT] = meshgrid(x1fit,x2fit);%创建网格
YFIT = b(1) + b(2)*X1FIT + b(3)*X2FIT + b(4)*X1FIT.*X2FIT;%%代入已经求得的参数,拟合函数式
mesh(X1FIT,X2FIT,YFIT);%画图
xlabel('Weight')
ylabel('Horsepower')
zlabel('MPG')
view(50,10)%改变角度
结果
系数b:
60.7103608050491
-0.0101535475890010
-0.188206440954575
3.84948273160185e-05
bint:
51.389844577376670.0308770327216
-0.0132913573307914-0.00701573784721061
-0.292829970434399-0.0835829114747502
1.25893736802855e-056.44002809517514e-05
stats:
0.774173440544747
101.702587411461
1.17235917863432e-28
15.2363354389984
分析
b分别为各参量的系数
即A*x1+B*x2+C中的A,B,C
stats中,第一个为相关系数,越大说明相关性越大,第三个为P值,值越小,模型可靠性越大。p值很小(P<0.001),说明拟合模型有效。
结果图
注意
Y与[X]行数相同,列数不同。
可拟合多个变量,原理是最小二乘法。
参考文章
xxin blog , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Matlab regress函数拟合多个变量分析!
-
matlab四维数据拟合函数代码-prism:具有正则化,降维和特征选择的多重样条回归
2021-05-20 21:20:39matlab四维数据拟合函数代码 棱镜:具有正则化,降维和特征选择的多重样条回归 Prism使用统计方法的组合进行基于样条的多元回归。 Prism通过平滑样条回归,PCA和RVR / LASSO的组合,使用正则化,降维和特征选择进行... -
怎样用MATLAB拟合两个自变量的函数系数和指数?
2021-04-21 21:38:24这个就看做是非线性拟合吧,仿照下面的例子:function shiyan2x1 = linspace( 0.5, 10, 15 );x2 = linspace( 10, 20, 15 );y = 2.5 * x1.^0.5 .* x2.^0.3; % 假设公式是这样的% 利用已知数据进行非线性拟合,根据...这个就看做是非线性拟合吧,仿照下面的例子:
function shiyan2
x1 = linspace( 0.5, 10, 15 );
x2 = linspace( 10, 20, 15 );
y = 2.5 * x1.^0.5 .* x2.^0.3; % 假设公式是这样的
% 利用已知数据进行非线性拟合,根据经验给abc一个初始值1, 1, 1,初始值不一定非要很准确
p = lsqcurvefit( @subfun, [ 1, 1, 1 ], [ x1', x2' ], y' );
disp( '拟合参数结果如下:' )
disp( [ 'a = ', num2str( p( 1 ) ), ', b = ', num2str( p( 2 ) ), ...
', c = ', num2str( p( 3 ) ) ] );
function ydata = subfun( p, xdata )
ydata = p( 1 ) * xdata( :, 1 ).^p( 2 ) .* xdata( :, 2 ).^p( 3 );
-
matlab拟合函数的三种方法
2020-02-14 12:07:39方法一:多项式拟合polyfit x=[1 2 3 4 5 6 7 8 9];...P= polyfit(x, y, 3) %三阶多项式拟合 xi=0:.2:10; yi= polyval(P, xi); %求对应y值 plot(xi,yi,x,y,'r*'); 运行结果: 多项式系数:P =0.1481 -1.4030 ... -
多个自变量的函数拟合问题
2021-04-18 16:27:30有七组数据(1,50): x=[ 13.4171 5.652496 7.560203 7.005844 11.98577 7.746066 10.69772 8.115705 14.04746 10.89177 8.992618 13.90936 6....请教一下该怎么编程呢,cftool是不是只能做两个自变量的函数拟合? -
matlab三自变量 一因变量多元非线性回归拟合应该如何编程实现(函数形式未知)
2021-04-18 04:56:11我有三个自变量 两个因变量,想分别做X1 X2 X3 与 Y1的关系和X1 X2 X3 与 Y2的关系,用matlab该怎样编程做多元非线性回归拟合,函数形式未知。还请哪位大佬帮帮忙,万分感激!数据如下:X1 X2 X3 Y1 Y210 3 0.2 0.... -
matlab多变量曲线拟合
2021-04-18 11:06:01大家好,由于初学不知道该怎么入手,希望高手及热心的朋友帮帮忙,一共有8组数据,abcd是自变量,F是因变量,需要利用这些数据用matlab编程拟合成一条曲线,得出一个含有abcd变量的F=f(abcd)函数,希望尽量能详细点... -
matlab曲线拟合公式中含有两个变量,x是自变量,y既是自变量又是因变量,求指导,y=f(x,y)
2021-04-18 16:27:32首先,将x、y看成同一变量,即x(1)、x(2) 然后,定义自变量函数,即fun=inline('x(2)-f(x(1),x(2))','a','x')%a是拟合系数 再用Matlab的nlinfit()函数或lsqcurvefit()函数进行拟合另外你也可以利用可视化工具cftool... -
MATLAB | 快速实现三维数据的拟合
2022-02-03 14:54:46MATLAB | 快速实现三维数据的拟合 导入三维数据,下面举例我们是直接定义,你也可以从文件中读取: 接着 点左上方 APP 就可看到它下方的 Curve Fitting,点进去: 再选择拟合数据的 Method 后,会自动生成拟合结果,... -
大于3个变量的曲线拟合 他又给我出难题!!^555555
2021-04-24 19:46:25年份 国民收入(亿元) 工业总产值(亿元) 农业总产值(亿元) 总人口(万人) 就业人口(万人) 固定资产投资(亿元) 财政收入(亿元)1952 598 349 461 57482 20729 44 18... -
求高手用Matlab做多变量拟合!!! - 计算模拟 - 小木虫 - 学术 科研 互动社区
2021-04-24 00:53:24希望高手及热心的朋友帮帮忙给出拟合方程和拟合曲线,一共有两组数据,X1,X2,X3是自变量,Y是因变量,需要利用这些数据用matlab编程拟合成一条曲线,得出一个含有X31,X2,X变量的Y=f(X1,X2,X3)函数,非常感谢!... -
求助用matlab拟合曲线参数(两个自变量)
2021-04-22 03:40:15CODE:Variable x1,x2,y;Function y=a1*a2*x1*exp(x2-3.64)/(1+ (1+a2*x1)*exp(x2-3.64) );Data;9.7134 8.0000206.59174.0793 8.0000181.03781.6373 8.0000130.75210.4996 8.0000 97.27970.0617... -
matlab如何拟合函数
2021-04-20 12:52:54储存着各离散点的横坐标和纵坐标,则在 MATLAB 中直接键入命令 cftool(X,Y) 就会弹出 Curve ......Matlab中插值拟合函数汇总和使用说明interp1,interp2,interp3,interpft,griddata,spline,interpn,meshgrid,ndgrid,t... -
MATLAB拟合函数使用说明
2021-04-25 11:30:52(由于不方便上传公式,有部分直接截图) 2.Polyval函数对应多项式拟合,多项式求值函数也相当重要,可以通过设定向量,快速定义如下多项式据此,可以大概猜测到polyval调用的形式了y=polyval(p,x)如上所述[y,delta]=... -
一个自变量、两个因变量,如何拟合自定义函数
2021-04-20 03:22:29Root of Mean Square Error (RMSE): 0.552968636193814Sum of Squared Residual: 7.33858350273712Correlation Coef. (R): 0.967603268749806R-Square: 0.936256085695309Adjusted R-Square: 0.851964171950494Deter... -
Matlab调用cftool工具的函数 批量曲线拟合
2021-04-18 16:27:25有一堆实验数据要拟合,MATLAB调用cftool工具箱,采用GUI模式显然会让人吐血,而用函数调用的方法就比较方便了。当然origin等软件可以批量弄,线性方程时matlab可以调用[p,e]=polyfit(x,y,n)完成。对于方程需要... -
matlab怎么拟合函数参数?
2021-04-20 04:38:34你让fx=fitresult结果fx就不是函数,而是个cfit类型了,你可以这样做,把参数提取出来,...可以用lsqcurvefit()函数或nlinfit()函数拟合。例如:x=[。。。]y...确定参数的初始值是比较繁琐的工作,一般可以用随机函数... -
matlab二元函数拟合怎么设计函数。
2021-05-02 07:52:31mip版关注:169答案:2悬赏:20解决时间 2021-01-24 19:12已解决2021-01-24 01:01下面是数据,要求拟合一个二元函数,自变量为a,b。请问在非线性拟合之前怎么设计函数,使其拟合误差最小。很急,请大家帮帮忙。a\b6.... -
matlab拟合函数怎么搞
2021-04-25 02:32:01话题:matlab拟合函数怎么搞??多谢大神相助回答:x=[-20,-15,-10,-5,0,5,10,15,20,25,30,35,40,45,50,55,60,65,0,5,0,5,0,5,100,105,110,115,120]; y=[43.463,363.624,25.01,211.1656,163.006,126.45,.45... -
matlab分布拟合函数
2020-04-15 21:27:45具体可以查看下面的链接: https://ww2.mathworks.cn/help/stats/fitdist.html -
matlabsin函数拟合
2021-04-18 17:28:22Matlab中插值拟合函数汇总和使用说明interp1,interp2,interp3,interpft,griddata,spline,interpn,meshgrid,ndgrid,table1 Matlab 中插值拟合函数汇总和使用说明命令 1......使用?MATLAB 曲线拟合工具箱做曲线拟合在... -
matlab多元与非线性回归即拟合问题regressnlinfit
2021-04-20 11:52:04matlab多元与非线性回归即拟合问题regressnlinfit 回归(拟合)自己的总结(20100728) 1:学三条命令:polyfit(x,y,n)---拟合成一元幂函数(一元多次) regress(y,x)----可以多元, nlinfit(x,y,’fun’,beta0) (可用于... -
xtwodpoly:xtwodpolyfun 将表示为两个变量的函数的数据拟合为二维多项式。-matlab开发
2021-06-01 02:55:58xtwodpolyfit 对表示为两个自变量 (x,y) 的函数的任意数据集合 (z) 执行二维多项式展开的加权线性最小二乘拟合。 据我所知,该函数与可从文件交换中获得的类似函数在两个方面有所不同: (1) 可以指定每个变量的最小... -
matlab二次函数拟合求函数_数模笔记——数据的插值、拟合
2020-11-22 01:15:14拟合:拟合问题的目标是寻求一个函数(曲线),使得该曲线在某种准则下与所有的数据点最为接近,即曲线拟合的最好(最小化损失函数)。必须有函数表达式、不一定通过所有数据点。二、模型适用范围或案例功能:... -
matlab多元函数拟合,只有数据,不知道函数形式,未知函数关系的多元函数拟合
2021-08-02 23:10:35刚开始思路是自定义一个函数关系式,然后用pso求解最优参数,其最后输出的y的值为下图所示,输入有三个自变量,x1,x2,x3. 最后的需求是找到x1,x2,x3.与y的具体关系式子,比如 y=ax1+bx2+cx3; y=ax1+bx2+cx3+ex1... -
用Matlab如何拟合指数函数?
2021-07-22 05:29:12[quote][parse]Bush wrote:[/parse]用Matlab软件:知道指数函数y=exp(a*x+b)以及该函数的一些点,即,并求出a,b的值????????那位大侠知道,请速发:usa_hp@163.com不尽感谢!!!!!!!!!!!!!!![/... -
MATLAB的拟合函数和工具
2021-04-19 01:53:45一元函数拟合可用cftool工具箱, 对于一元多项式拟合也可用polyfit()多元线性函数y=ax的拟合函数regress()语法是:[a, aint]=regress(y,x,alpha)其中1-alpha是置信度, 默认alpha=0.05. 即置信度为�, aint是a的置信...