感悟网 导航

MATLAB中已知数据(x, y, z的值) 如何求公式 (线性关系)? matlab中如何根据x,y的值拟合曲线,然后将任意x对应y...

作者&投稿:钮骅 (若有异议请与网页底部的电邮联系)
matlab知道x,y,z的数据,如何拟合z=a/x+by,求出a,b的值,要求不含常数项~

再已知x y z的情况下,
比如 你已经把代码列出
X(:,1)=x;
X(:,2)=y;
Y(:,1)=z;
接下来可以用非线性拟合
para =[1,1];%假定一个a 和b的初值,越接近真实的越好
Func = @(para,t)(para(1)./t(:,1)+para(2).*t(:,2));
result= nlinfit(X,Y,Func,para);

a = result(1);
b = result(2);
结果就出来了

x0 = [3 4 5 7.5 10 15 20 40];
y0=[2.75005 3.2248 3.5750 4.0362 4.2357 4.3947 4.4553 4.5129];
z = polyfit(x0,y0,1);
polyval(z,x) %x为任意x

这个属于多元回归问题

Matlab中提供了直接的regress函数,调用格式如下[b,bint] = regress(y,X)

举个例子吧,由于你的数据有问题 我就使用自己的数据了

我们使用Matlab自带的carsmall数据,使用其中的x=weight,y=horsepower,z=MpG
拟合z=a+bx+cy+dxy,的参数 abcd

%by dynamic
%see also http://www.matlabsky.com
%2009.2.15
%
load carsmall
x= Weight;
y = Horsepower; % Contains NaN data
z = MPG;
XX = [ones(size(x)) ,x, y, x.*y];
b = regress(z,XX)

b =
60.7104
-0.0102
-0.1882

只能使用最原始的最大似然准则去判定了...
不知道Matlab里有没有对应的模型, 估计得自己写代码

你上面的数组不对称, x,y,z都有45个, 而t只有42个.截取了x,y,z前42个值作为参考, 我用自己的代码根据最大似然准则拟合的结果为:
a=-3.24414
b=5.47341
c=-2.05107

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网