首页编程matlab 曲面拟合?matlab如何进行曲面拟合我有几十组(x,y,z

matlab 曲面拟合?matlab如何进行曲面拟合我有几十组(x,y,z

编程之家 2023-11-06 213次浏览

各位老铁们好,相信很多人对matlab 曲面拟合都不是特别的了解,因此呢,今天就来为大家分享下关于matlab 曲面拟合以及matlab如何进行曲面拟合我有几十组(x,y,z的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

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)

matlab 曲面拟合?matlab如何进行曲面拟合我有几十组(x,y,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)

matlab 曲面拟合?matlab如何进行曲面拟合我有几十组(x,y,z

于是[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的问题提供了一些有价值的信息。如果您还有其他疑问,我们将很乐意为您提供进一步的帮助。

固原网?固原市有几个县 秦皇岛建网站(怎样在网上认识秦皇岛的女大学生她们都喜欢去哪些网站)