matlab 曲面拟合?matlab如何进行曲面拟合我有几十组(x,y,z
各位老铁们好,相信很多人对matlab 曲面拟合都不是特别的了解,因此呢,今天就来为大家分享下关于matlab 曲面拟合以及matlab如何进行曲面拟合我有几十组(x,y,z的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
matlab如何进行曲面拟合我有几十组(x,y,z
曲面拟合可以按下列步骤进行:
1、根据x,y,z数据,可以用cftool拟合工具箱的常用函数去拟合,判断(x,y,z)大概符合那个曲面方程。(注:cftool拟合工具箱有时候不一定与实际相符)
2、建立曲面方程模型函数,如func=@(a,x) a(1)*x(1)^2+a(2)*x(2)^2,这里x(1)→x,x(2)→y
3、用 nlinfit()或lsqcurvefit()拟合函数,去拟合模型函数的系数a。
a= nlinfit(x,z,func,a0)
a=lsqcurvefit(func,a0,x,z)
4、计算 z数据值与z拟合值的拟合度,即决定系数R²是否接近于1。愈接近于1其拟合精度也就愈高。
matlab 散点拟合三维曲面写出曲面表达式
我现在也是这个情况啊!正是相当纠结呢!在网上看到了这个···
因为这个函数的形式比较特殊,对其两边取对数后得到
log(y)=log(a)+b*log(x1)+c*log(x2)
于是立即就转换为了线性拟合
[1 log(x1) log(x2)]*[log(a) b c]'=log(y)
于是[log(a) b c]'=[1 log(x1) log(x2)]\log(y)
这样就可以得到a,b,c了。不需要进行非线性拟合。
下面是程序:(对于x1、x2、y的赋值部分这里就不写了,你自己在前面加上即可)
p=[ones(length(y),1) log([x1 x2])]\log(y);%就这一句话就搞定了
a=exp(p(1)),b=p(2),c=p(3)%这就是拟合后的参数值
y%这是采样点y的值
a*x1.^b.*x2.^c%这是拟合后在采样点得到的值,可以和y比较一下,很接近
matlab三维曲面进行平面拟合,利用最小二乘法
可以直接使用matlab的曲面拟合工具箱,但是平面拟合的效果一般
1、在命令窗口输入待拟合的数据
>>x=[11.4,11.4,11.4,11.4;13.1,13.1,13.1,13.1;14.8,14.8,14.8,14.8;16.5,16.5,16.5,16.5;18.2,18.2,18.2,18.2];
y=[0.84,0.72,0.61,0.45;0.68,0.49,0.44,0.41;0.57,0.43,0.40,0.38;0.42,0.37,0.33,0.17;0.39,0.30,0.24,0.16];
z=[1.62,2.51,2.63,2.64;1.93,2.58,3.01,3.23;2.45,2.83,3.27,3.31;2.60,3.27,3.33,3.45;2.93,3.74,4.09,4.35];
2、输入sftool命令打开曲面拟合工具箱,然后依次选择x,y,z数据
>>sftool
3、因为你要求平面拟合,所以选择一次多项式类型
4、左侧面板即为拟合结果
其中,R-square表示拟合度,越接近于1表示拟合效果越好,此时仅为0.8241,所以效果并不好。
matlab如何进行曲面拟合
在一丘陵地带测量高程,x和 y方向每隔100米测一个点,得高程如下表,试
插值一曲面,确定合适的模型,并由此找出最高点和该点的高程。
x
y 100 200 300 400 500
100 636 697 624 478 450
200 698 712 630 478 420
300 680 674 598 412 400
-113-
400 662 626 552 334 310
解编写程序如下:
clear,clc
x=100:100:500;
y=100:100:400;
z=[636 697 624 478 450
698 712 630 478 420
680 674 598 412 400
662 626 552 334 310];
pp=csape({x,y},z')
xi=100:10:500;yi=100:10:400
cz1=fnval(pp,{xi,yi})
cz2=interp2(x,y,z,xi,yi','spline')
[i,j]=find(cz1==max(max(cz1)))
x=xi(i),y=yi(j),zmax=cz1(i,j)
在某海域测得一些点(x,y)处的水深 z由下表给出,在矩形区域(75,200)
×(-50,150)内画出海底曲面的图形。
x 129 140 103.5 88 185.5 195 105 157.5 107.5 77 81 162 162 117.5
y 7.5 141.5 23 147 22.5 137.5 85.5–6.5-81 3 56.5–66.5 84-33.5
z 4 8 6 8 6 8 8 9 9 8 8 9 4 9
解编写程序如下:
x=[129 140 103.5 88 185.5 195 105 157.5 107.5 77 81 162 162
117.5];
y=[7.5 141.5 23 147 22.5 137.5 85.5-6.5-81 3 56.5-66.5 84
-33.5];
z=-[4 8 6 8 6 8 8 9 9 8 8 9 4
9];
xi=75:1:200;
yi=-50:1:150;
zi=griddata(x,y,z,xi,yi','cubic')
subplot(1,2,1)
plot(x,y,'*')
subplot(1,2,2)
mesh(xi,yi,zi)希望对你有帮助,这是插值
某乡镇企业 1990-1996年的生产利润如下表:
年份 1990 1991 1992 1993 1994 1995 1996
利润(万元) 70 122 144 152 174 196 202
试预测 1997年和 1998年的利润。
解作已知数据的的散点图,
-1
x0=[1990 1991 1992 1993 1994 1995 1996];
y0=[70 122 144 152 174 196 202];
plot(x0,y0,'*')
发现该乡镇企业的年生产利润几乎直线上升。
因此,我们可以用 y=a x+a作为
1 0
拟合函数来预测该乡镇企业未来的年利润。
编写程序如下:
x0=[1990 1991 1992 1993 1994 1995 1996];
y0=[70 122 144 152 174 196 202];
a=polyfit(x0,y0,1)
y97=polyval(a,1997)
y98=polyval(a,1998)
非常感谢您的阅读!我们希望本文对于解决您关于matlab 曲面拟合和matlab如何进行曲面拟合我有几十组(x,y,z的问题提供了一些有价值的信息。如果您还有其他疑问,我们将很乐意为您提供进一步的帮助。