matlab 曲面拟合,matlab 如何进行曲面拟合
本文目录索引
- 1,matlab 如何进行曲面拟合
- 2,如何在matlab里对离散Z点拟合曲面, 不一定经过数据点?
- 3,请问Matlab中如何将离散点连成曲线,谢谢了!
- 4,matlab 散点拟合三维曲面写出曲面表达式
- 5,matlab如何将离散点拟合成曲面
- 6,关于matlab下用最小二乘法拟合曲面的问题
- 7,matlab怎么将点云数据用最小二乘方法拟合出平面
- 8,matlab如何进行曲面拟合我有几十组(x,y,z
- 9,matlab三维曲面进行平面拟合,利用最小二乘法
- 10,MATLAB曲面拟合最小二乘法
1,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)
2,如何在matlab里对离散Z点拟合曲面, 不一定经过数据点?
你的问题可以这样来解决。
1、根据你的数据x、y、z,先通过matlab的拟合函数,拟合出z(x,y)的表达式,再用meshgrid函数进行网格化,最后用mesh函数绘出其三维曲面图。
2、主要代码书写格式
%求拟合系数
x=[。。。]; y=[。。。]; z=[。。。];
X=[x y]; Y=z;
func=@(a,x) a(1).*x(:,1).^2+ a(2).*x(:,2).^2 %表达式为假定的
a0=[。。。] %拟合系数的初值
a= nlinfit(X,Y,func,a0); %求 拟合系数
%绘制曲面图
x=x0:(xn-x0)/n:xn %x0最小值,xn最大值,即x的范围
y=y0:(yn-y0)/n:yn %y0最小值,yn最大值,即y的范围
[X,Y]=meshgrid(x,y) %网格化
Z=a(1).*X.^2+ a(2).*Y.^2 %计算Z值
mesh([X,Y,Z) %三维曲面图
3,请问Matlab中如何将离散点连成曲线,谢谢了!
>x=[0 1 2 3 4 5 6 7 8 8.85],y=[13 12.1 11 10.5 10.1 9.9 9.6 9.3 9.0 8.9] //MATLAB中输入X及Y的数值 >xx=0:0.01:10; //对X轴进行划分成若干等份,设置好参数 >yy=spline(x,y,xx);//三次方样条数据插值 >plot(x,y,'o',xx,yy) //输出结果 程序运行如下: 扩展资料样条线可以采用单段和多段的方式创建。对于单段样条线来说。阶次=点数-1,因此单段样条线最多只能使用25个点。单段构造方式受到一定的限制,定义点的数量越多,样条线的阶次越高,而阶次越高样条线会出现意外结果,如变形等。而且单段样条线不能封闭,因此不建议使用单段构造样条线。 在插值问题中,样条插值通常比多项式插值好用。用低阶的样条插值能产生和高阶的多项式插值类似的效果,并且可以避免被称为龙格现象的数值不稳定的出现。并且低阶的样条插值还具有“保凸”的重要性质。 在计算机科学的计算机辅助设计和计算机图形学中,样条通常是指分段定义的多项式参数曲线。由于样条构造简单,使用方便,拟合准确,并能近似曲线拟合和交互式曲线设计中复杂的形状,样条是这些领域中曲线的常用表示方法。 参考资料来源:百度百科—样条
4,matlab 散点拟合三维曲面写出曲面表达式
为了直观表达我们所求的结果,我们喜欢用图像来表达。对于图像来说分类很多,如散点图,连续图,等高图等等。往往我们习惯把理论图像和模拟图像画在同一个图像,用来区分理论和模拟的吻合程度。 开启分步阅读模式 工具材料: matlab 操作方法 01 scatter(X,Y,S,C),这是matlab画散点图的命令;这里X,Y是画散点图的数据。 其中S为大小,系统默认大小为50,C表示所画图的颜色。 02 x=1:0.05:10; . scatter(x,sin(x),100,'r') . . . 这里通过散点画的是一个sinx 的图像,这里100表示所画图像点的大小,r代表标记散点的颜色。 03 scatter(X,Y)这个是默认画散点图的方法,一切设置按系统默认!X,Y表示散点图的X,Y坐标。下图的命令。 x=1:0.05:10; scatter(x,cos(x)) 04 scatter(X,Y,S) 这里所画的散点图,可以调节对应的大小。也就是说可以通过S这个参数调节标记点的大小。下图是我们将S=1000设置为1000的图像。scatter(...,M)更改标记的图形,默认是圆圈标记。如果需要用其他符号标记可以在这里修改。 scatter(...,'s') ;通过方形标记。 注意别忘了添加单引号。 02 scatter(...,'filled') 通过实心图像来标记。 前面的介绍中,一直是空心符号标记的。 03 scatter3: 立体散点图的画法,具体命令如下。 [x,y,z] = sphere(16); X = [x(:)*.5 x(:)*.75 x(:)]; Y = [y(:)*.5 y(:)*.75 y(:)]; Z = [z(:)*.5 z(:)*.75 z(:)]; S = repmat([1 .75 .5]*10,numel(x),1); C = repmat([1 2 3],numel(x),1); scatter3(X(:),Y(:),Z(:),S(:),C(:),'filled'), view(-60,60)
5,matlab如何将离散点拟合成曲面
1、在新建的脚本文件编辑框键入以下代码 clear clc %产生数据 x=-20:2:20; y=-20:2:20; [X,Y]=meshgrid(x,y); Z=3*X.^3-4*X+2*Y.^4+3*Y^3; mesh(X,Y,Z) 2、待拟合的曲面形状为, 3、首先,在APP选项框中打开Curve fitting工具。工具位置如图所示。 4、单击curve fitting之后,打开页面结果如下。 5、单击X data选框,选择待拟合的数据X。 6、单击Y data选框,选择待拟合的数据Y。 7、单击Z data选框,选择待拟合的数据Z。 8、完成效果图。
6,关于matlab下用最小二乘法拟合曲面的问题
x=[1.52 3.03 3.27 4.2 0.93 -4.2 -3.27 -3.03 -1.52];
y=[0.8 2.1 4.6 7.1 8.4 7.1 4.6 2.1 0.8];
z=[2.16 2.4 2.69 3.82 3.02 2.68 2.5 2.48 2.31];
A=[x',y',ones(size(x'))];
a=A\z'
得到
a =
0.0592
0.1269
2.1371
就是说a(1)=0.0592
a(2)=0.1269
a(3)=2.371
原理:
我们可以把这题看成已知x,y,z,来求a(1),a(2),a(3)
由于表达式对于a(1),a(2),a(3)来说是线性的。
也就相当于求解三元一次方程组(只不过这里的方程数比未知数个数多)。这个可以用矩阵来解决。
你先看一下上面构造出来的A,然后再看一下A乘以[a1;a2;a3]这个列向量。
可能你就知道上面是什么意思了。
7,matlab怎么将点云数据用最小二乘方法拟合出平面
%点X,Y,Z到平面Ax+By+Cz+D=0的距离为
%d(ABCD,XYZ)=|AX+BY+CZ+D|/sqrt(A^2+B^2+C^2)
%ABCD四个变量只有三个是互相独立的
%设A=cos(a);B=sin(a)*cos(b);C=sin(a)*sin(b)
%那么A^2+B^2+C^2=1,距离公式化简为
%d(abc,XYZ)=|cos(a)*X+sin(a)*cos(b)*Y+sin(a)*sin(b)*Z+c|
%现在有已知点序列X,Y,Z,求参数 a b c
%先构造一个函数fun(p) 输入参数为p,其中p(1)=a,p(2)=b,p(3)=c
%使用 lsqnonlin求得p,使得sum((fun(p))^2)最小
fun=@(p) cos(p(1))*X+sin(p(1))*cos(p(2))*Y+sin(p(1))*sin(p(2))*Z+p(3);
p = lsqnonlin(fun,[0 0 0]);
A=cos(p(1));B=sin(p(1))*cos(p(2));C=sin(p(1))*sin(p(2));D=p(3);
8,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其拟合精度也就愈高。
9,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,所以效果并不好。
10,MATLAB曲面拟合最小二乘法
matlab中用最小二乘拟合的常用函数有polyfit(多项式拟合)、nlinfit(非线性拟合)以及regress(多元线性回归)。由于是曲面拟合,自变量有2个,应变量一个,可以使用的有nlinfit和regress,线性时用regress,非线性时用nlinfit。 具体介绍一下regress regress虽然名义上只能做线性回归但是可以把x^2等非线性量作为一个额外自变量做计算,因此在一些特殊情况下也可以做非线性拟合。 以matlab自带的数据为样本,示例代码如下:(%后面的是注释) clc;clear; load carsmall%此数据样本matlab自带 x=Weight;y=Horsepower;z=MPG;%取这3个变量作为拟合对象,x、y自变量,z应变量 plot3(x,y,z,'p'); hold on; c=ones(length(x),1); b=regress(z,[x,y,c]);%纯线性拟合 模型z=b(1)*x+b(2)*y+b(3) [X,Y]=meshgrid(linspace(1500,5000,10),linspace(40,240,10)); C=ones(10); mesh(X,Y,b(1)*X+b(2)*Y+b(3)*C); 得到下图: b=regress(z,[x.^2,y.^2,x.*y,x,y,c]);%添加非线性项进行拟合 figure plot3(x,y,z,'p'); hold on; mesh(X,Y,b(1)*X.^2+b(2)*Y.^2+b(3)*X.*Y+b(4)*X+b(5)*Y+b(6)*C); grid on; 得到下图: