用matlab如何将excle中的数据拟合成多元非线性函数并做出图,能不能写成

用matlab如何将excle中的数据拟合成多元非线性函数并做出图,能不能写成,第1张

由于你没有具体的数据结构,无法为你提供具体的代码。只能将“用matlab如何将excle中的数据拟合成多元非线性函数并做出图”的实现步骤说明如下:

首先,用xlsread()函数来读取excel 的数据。并赋值给A

A=xlsread('xxxxls')

第二,由矩阵A,提取y,x1,x2,x3,。。。

y=A(:,1),x1=A(:,2),x2=A(:,3),。。。

第三,根据y,x1,x2,x3数据,初定拟合多元非线性函数的形式(此过程需要调整)

func=@(a,x) 多元非线性函数表达式

第四,用lsqcurvefit()或nlinfit()函数来拟合多元非线性函数的系数

a=lsqcurvefit(func,a0,x,y); 或 a=nlinfit(x,y,func,a0);

第五,用corrcoef()函数来判别拟合效果

y=A(:,1)

y1=func(a,x)

R2=corrcoef(y1,y); 当R2≈1,则拟合是比较合理的。

如你有具体的数据,可以复制到私信上,进一步交流。

怎么用matlab进行非线性的多元函数拟合 matlab拟合工具箱cftool %拟合数据曲线;线性最小二乘法是解决曲线拟合的最常用的方法, %1、多项式拟合函数;p=polyfit(x,y,n);求p拟合函数在xi处的近似值pi=polyval(p,xi); %2、利用常用矩阵的除法解决

可以做到!!关于参数问题 help之

我一般喜欢使用nlinfit

非线性拟合,我用过很多次发现要用好她

的关键在于你要找到一个很好的初值

举个例子:

椭圆的方程可以是

ax^2+by^2+cxy+dx+ey+f=0;

发现其实双曲线,抛物线和他的一样

所以你在选取初值的时候最起码初值带入后

是个椭圆,

不然你拟合出来不仅仅是效果差,可能就变质

你说的情况其实是解方程了(四个未知数四个方程)

对于更多的数据:

先编写函数

function f=ffun(a,x)

f=a(1)x(:,1)+a(2)x(:,1)^2+a(3)x(:,2)+a(4)x(:,2)^2;

其余运行

x=[p,c];%p,c为列响量,f也为列向量

a0=[1,1,1,1];%初值取好点效果更好

a=nlinfit(x,f,'ffun',a0)

A(:,1)=data(:,1)^2;

A(:,2)=data(:,2)^2;

A(:,3)=data(:,1)data(:,2);

A(:,4)=data(:,1);

A(:,5)=data(:,2);

A(:,6)=ones(16,1);%应该有16行吧

x=(A'A)\(A'data);

当然,你这个数据不理想,所以运行会产生警告,这样算出来的系数误差会很大。

不是最小二乘法,是牛顿法

用法示例如下

clc;clear;

x=[11389 10622 09822 0934 09251 09158];

y=[003 1 503 1505 1997 303];

myfunc=inline('-beta(1)log(x+beta(2))-beta(3)','beta','x');

beta=nlinfit(x,y,myfunc,[0 0 0]);

k=beta(1),a=beta(2),b=beta(3)

%test the model

xx=min(x):max(x);

yy=-klog(x+a)-b;

plot(x,y,'o',x,yy,'r')

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12458397.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存