matlab做一组数据的拟合直线,

matlab做一组数据的拟合直线,,第1张

你这个程序是对的呀,也只是有一点的小毛病呀

clear all

%线性拟合的程序:

x=[15 152 154 156 158 16 162 164 166 168];

y=[001 0015 0019 0024 003 0036 0041 0047 0052 0057];

p=polyfit(x,y,1);

yfit=polyval(p,x);

figure(1);

plot(x,y,'r',x,yfit,'b-');

legend('原始数据','拟合直线');

xlabel('X/mm');

ylabel('V/mV');

grid on

%在计算非线性误差过程中,需要求实际输出值与拟合直线输出值的最大偏差,这也可通过编程实现,

yerr=y-yfit;

[C I]=max(yerr);

figure(2)

scatter(x,yerr,'o');

hold on

plot(x,yerr,'r-');

xlabel('X/mm')

ylabel('V/mV')

grid on

x=[1 2 3 4 5]';

y=[11 19 31 42 51]';

p = polyfit(x,y,1) % 直线拟合,获得拟合系数,不明白帮助里查函数

f = polyval(p,x); % 用拟合系数,计算拟合线的y值

plot(x,y,'o'); % 画离散点

hold on;

plot(x,f,'-r'); % 画拟合线

hold off;

线性拟合如下:

------------------------------------------------------------------

x=[0 20 40 60 100 130 160 190];

y=[18 17586 17136 16704 1584 15129 14544 13896];

a=polyfit(x,y,1);

xi=0:0001:200;

yi=polyval(a,xi);

plot(x,y,'go','MarkerEdgeColor','k','MarkerFaceColor','g','MarkerSize',6)

xlabel('深度/m','fontsize',16);

ylabel('温度/℃','fontsize',16);

axis([0 200 12 20])

hold on

plot(xi,yi,'linewidth',2,'markersize',16)

legend('原始数据点','拟合曲线')

sprintf('直线方程:Y=%05gxX+%05g',a(1),a(2))

-----------------------------------------------------------------

指数拟合如下:

-----------------------------------------------------------------

先定义函数:

function Y=nhfun(b,x)

Y=b(1)exp(b(2)x)+b(3);

在运行程序:

x=[0 20 40 60 100 130 160 190];

y=[18 17586 17136 16704 1584 15129 14544 13896];

x0=[0,1,0]  %设置初始值

b=lsqcurvefit(@nhfun,x0,x,y);

Xi=0:0001:200;

Yi=b(1)exp(b(3)Xi)+b(2);

plot(x,y,'cp','MarkerEdgeColor','k','MarkerFaceColor','g','MarkerSize',6)

hold on

plot(Xi,Yi,'linewidth',2,'markersize',16)

legend('原始数据点','拟合曲线')

sprintf('曲线方程:Y=%05g+e^(%05gxX)+(%05g)',b(1),b(2),b(3))

--------------------------------------------------------------

!!!曲线方程程序运行时会报错,是因为你的X数据中有一个为0,这个不影响结果的

图每次只能发一张,所以我发到你邮箱哈

1、MATLAB自带的曲线拟合工具包,功能十分强大。首先,在上方工具栏选取APPS,点击curve fitting。

2、输入自变量x和因变量y。

3、选择拟合方式,有多项式拟合polynomial,高斯拟合gaussian,幂指数拟合power等等,本次以多项式拟合为例。

4、通过数据计算,可以获得曲线参数(曲线函数中的各项系数),从而实现曲线拟合。

5、完成效果图。

x=[20000

10000

06667

05000

04000

03333

02857

02500

02222

02000

01818

01667

01538

01429

01333

01250

01176

01111

01053

01000];

y=[19080

15442

13268

11714

10751

10034

09336

08906

08545

08198

07907

07657

07442

07274

07112

06970

06832

06738

06620

06525];

p=polyfit(x,y,2);%%%个人感觉这里用二阶多项式拟合比较好

xx=0:001:21;

yy=polyval(p,xx);

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

以上就是关于matlab做一组数据的拟合直线,全部的内容,包括:matlab做一组数据的拟合直线,、我是matlab的初学者,基本上什么都不会,现在希望用matlab将两组的数据拟合成直线关系,并且要详细程序、matlab 线性拟合等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10124542.html

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

发表评论

登录后才能评论

评论列表(0条)

保存