二维插值

本文介绍了二维插值中的interp2和griddata函数,重点阐述了它们的区别。interp2适用于已知数据点构成的规则矩形域,要求数据点严格单调且等间距,而griddata则能处理不规则排列的数据点,尤其适合随机数据的插值。文章还提到了MATLAB 4 griddata方法,这是一种平滑插值算法。同时,讲解了scatter函数在绘制散点图中的用法,包括大小和颜色的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二者均是常用的二维差值方法,两者的区别是,interp2的插值数据必须是矩形域,即已知数据点(x,y)组成规则的矩阵,或称之为栅格,可使用meshgid生成。而griddata函数的已知数据点(X,Y)不要求规则排列,特别是对试验中随机没有规律采取的数据进行插值具有很好的效果。griddata(X,Y,XI,YI,'v4') v4是一种插值算法,没有具体的名字,原文称为“MATLAB 4 griddata method”,是一种很圆滑的差值算法,效果不错。X和Y提供的已知数据点,XI和YI是需要插值的数据点,一般使用meshgrid生成,当然也可以其他数据,但是那样绘图的时候就比较麻烦,不能使用mesh等,只能使用trimesh。

ZI=interp2(X, Y, Z, XI, YI, method, extrapval):在已知的(X,Y,Z)三维栅格点数据上,在(XI, YI)这些点上用method指定的方法估计函数值,外插使用'extrapval'。  
    二维插值中已知数据点集(X, Y)必须是栅格格式,一般用meshgrid函数产生。interp2要求(X, Y)必须是严格单调的并且是等间距的,如果(X, Y)不是等间距的,会将且变换为等间距形式,如果已知是等间距的,可在method参数前加星号,如果:'*cubic'。

A=[1.486,3.059,0.1;2.121,4.041,0.1;2.570,3.959,0.1;3.439,4.396,0.1;
4.505,3.012,0.1;3.402,1.604,0.1;2.570,2.065,0.1;2.150,1.970,0.1;
1.794,3.059,0.2;2.121,3.615,0.2;2.570,3.473,0.2;3.421,4.160,0.2;
4.271,3.036,0.2;3.411,1.876,0.2;2.561,2.562,0.2;2.179,2.420,0.2;
2.757,3.024,0.3;3.439,3.970,0.3;4.084,3.036,0.3;3.402,2.077,0.3;
2.879,3.036,0.4;3.421,3.793,0.4;3.953,3.036,0.4;3.402,2.219,0.4;
3.000,3.047,0.5;3.430,3.639,0.5;3.822,3.012,0.5;3.411,2.385,0.5;
3.103,3.012,0.6;3.430,3.462,0.6;3.710,3.036,0.6;3.402,2.562,0.6;
3.224,3.047,0.7;3.411,3.260,0.7;3.542,3.024,0.7;3.393,2.763,0.7];
x=A(:,1);y=A(:,2);z=A(:,3);
scatter(x,y,15,'r','s')%散点图
figure
[X,Y,Z]=griddata(x,y,z,linspace(1.486,4.271)',linspace(1.604,4.276),'v4');%插值
pcolor(X,Y,Z);shading interp%伪彩色图
figure,contourf(X,Y,Z) %等高线图
figure,surf(X,Y,Z)%三维曲面





x=[129 140 103.5 88 185.5 195 105.5 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];

cx=75:0.5:200;
cy=-50:0.5:150;
cz=griddata(x,y,z,cx,cy','cubic');

meshz(cx,cy,cz),rotate3d
xlabel('X'),ylabel('Y'),zlabel('Z')
%pause

figure(2),contour(cx,cy,cz,[-5 -5]);grid
hold on
plot(x,y,'+')
xlabel('X'),ylabel('Y')


scatter函数是绘制散点图的

scatter(X,Y,S,C),这是matlab画散点图的命令;这里X,Y是画散点图的数据。 其中S为大小,系统默认大小为50,C表示所画图的颜色。

scatter(...,M)  更改标记的图形,默认是圆圈标记。如果需要用其他符号标记可以在这里修改。

scatter(...,'s') ;通过方形标记。注意别忘了添加单引号。

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)


matlab中mesh()和surf()函数的主要区别是:
mesh()用于绘制不是特别精细的三维曲面网格图。同一层面的线条用相同的颜色表示。
surf()用于绘制比较光滑的三维曲面网格图。各线条之间的补面用颜色填充。

命令1 contour  
功能 曲面的等高线图  
用法 contour(z) 把矩阵z中的值作为一个二维函数的值,等高曲线是一个平面的曲线,平面的高度v是Matlab自动取的;  
contour(x,y,z) (x,y)是平面z=0上点的坐标矩阵,z为相应点的高度值矩阵。效果同上;  
contour(z,n) 画出n条等高线;  contour(x,y,z,n) 画出n条等高线;  
contour(z,v) 在指定的高度v上画出等高线;  contour(x,y,z,v) 同上;  
[c,h] = contour(…) 返回如同contourc命令描述的等高矩阵c和线句柄或块句柄列向量h,这些可作为clabel命令的输入参量,每条线对应一个句柄,句柄中的userdata属性包含每条等高线的高度值;  
contour(…,’linespec’) 因为等高线是以当前的色图中的颜色画的,且是作为块对象处理的,即等高线是一般的线条,我们可象画普通线条一样,可以指定等高线的颜色或者线形。   
clabel(C,v) 在给定的位置v上显示标签  
clabel(C,'manual') 允许用户通过鼠标来给等高线贴标签  >>[x,y] = meshgrid(-2:.2:2);  >>z = x.*y.*exp(-x.^2-y.^2);  >>[C,h] = contour(x,y,z);  >>clabel(C,h);  命令3 contourc  
功能 低级等高线图形计算命令。该命令计算等高线矩阵c,该矩阵可用于命令contour,contour3和contourf等。矩阵z中的数值确定平面上的等高线高度值,等高线的计算结果用由矩阵z维数决定的间隔的宽度。  
用法 C = contourc(Z) 从矩阵z中计算等高矩阵,其中z的维数至少为2*2阶,等高线为矩阵z中数值相等的单元。等高线的数目和相应的高度值是自动选择的。  
C = contourc(Z,n) 在矩阵z中计算出n个高度的等高线。  
C = contourc(Z,v) 在矩阵z中计算出给定高度向量v上计算等高线,当然向量v的维数决定了等高线的数目。若只要计算一条高度为a的等高线,输入:contourc(Z,[a,a]);  
C = contourc(x,y,Z) 在矩阵z中,参量x,y确定的坐标轴范围内计算等高线;  C = contourc(x,y,Z,n) 从矩阵Z中,参量x与y确定的坐标范围内画出n条等高线;  
C = contourc(x,y,Z,v) 从矩阵Z中,参量x与y确定的坐标范围内,画在v指定的高度上指定的等高线。  命令4 contour3  
功能 三维空间等高线图。该命令生成一个定义在矩形格栅上曲面的三维等高线图。










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值