你这个程序是对的呀,也只是有一点的小毛病呀
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 线性拟合等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)