请教,如何用Matlab做形如z=a*x^b*y^c的拟合,其中a,b,c为参数。z,x,y为变量,有实际数值。
展开全部
你可以用自然对数把公式变形成:
ln(z) = ln(a) + b*ln(x) + ln(y)
然后用regress做线性拟合;
也可以输入sftool进入面拟合工具包,设置好x、y、z后,选择custom equation, 然后输入你的公式,然后fit。
ln(z) = ln(a) + b*ln(x) + ln(y)
然后用regress做线性拟合;
也可以输入sftool进入面拟合工具包,设置好x、y、z后,选择custom equation, 然后输入你的公式,然后fit。
追问
这个工具箱如何打开,具体程序又如何编写,我以前不会用这个软件,麻烦您说详细一点,感激不尽!
追答
第一种方法,你可以先导入x,y,z (注意x,y,z应该是n行1列的向量,如果不是,用x=x')然后:
log_x = log(x);
log_y = log(y);
log_z = log(z);
N = length(log_x);
intercept = ones(N,1);
X = [log_x log_y intercept];
Y = log_z;
B = regress(Y, X);
然后你就得到a = B(1), b = B(2), c = B(3).
关于regress的详细用法,你可以输入help regress;
第二种方法,如果你输入sftool, 弹出一个对话框, 就接着用就行了(界面很直观)。 如果没有的话,你可以在网上搜索一下matlab stats工具包。如果找不到我可以发一份给你。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询