0,18},{20,17.586},{40,17.136},{60,16.704},{100,15.84},{130,15.192},{160,14.544},{190,13.896} 8组数据进行线性和指数拟合,以第一组数据为例其中0为海水测量深度 18为海水温度 最好能有图 谢谢时间紧迫 16号前必须要啊 否则有可能毕业不了各位大虾们救命啊
第二个指数曲线 不是拟合方程是不是应该是指数式的啊
最好能将结果(图 代码 以及方程贴到word里 发送到我邮箱670322253@qq.com里)
线性拟合如下:
------------------------------------------------------------------
x=[0 20 40 60 100 130 160 190];
y=[18 17.586 17.136 16.704 15.84 15.129 14.544 13.896];
a=polyfit(x,y,1);
xi=0:0.001: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=%0.5gxX+%0.5g',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 17.586 17.136 16.704 15.84 15.129 14.544 13.896];
x0=[0,1,0] %设置初始值
b=lsqcurvefit(@nhfun,x0,x,y);
Xi=0:0.001: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=%0.5g+e^(%0.5gxX)+(%0.5g)',b(1),b(2),b(3))
--------------------------------------------------------------
!!!曲线方程程序运行时会报错,是因为你的X数据中有一个为0,这个不影响结果的
图每次只能发一张,所以我发到你邮箱哈
matlab中线性拟合可以使用多项式拟合函数polyfit()实现,其调用格式为
P = polyfit(X,Y,N)
其中,X,Y是需要拟合的数据,N是拟合的多项式的最高次数,P是拟合的多项式的系数。
实例演示如下:
1、示例数据
x=[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2]
y=[-8,-236,-415,-562,-701,-860,-961,-1082,-1188,-1304,-1405,-1534]
拟合方程:y=a+bx
2、matlab代码
>> x=[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2];
>> y=[-8,-236,-415,-562,-701,-860,-961,-1082,-1188,-1304,-1405,-1534];
>> p = polyfit(x,y,1)
>> plot(x,y,'o',x,polyval(p,x))
3、结果及说明
p =
1.0e+003 *
-1.3253 0.0068
表示拟合的线性公式为
:
y
=
-1325.3x+6.8