首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【matlab】函数meshgrid的用法详解(生成网格矩阵)和ndgrid的区别及用法「建议收藏」

【matlab】函数meshgrid的用法详解(生成网格矩阵)和ndgrid的区别及用法「建议收藏」

作者头像
全栈程序员站长
发布2022-07-01 13:15:52
发布2022-07-01 13:15:52
17.1K0
举报

大家好,又见面了,我是你们的朋友全栈君。

——————————————————————

meshgrid 函数用来生成网格矩阵,可以是二维网格矩阵。

  • exp1_1:生成二维网格,用法为:[x y]=meshgrid(a b); % a 和b是一维数组,如a=[1 2 3]; b= [2 3 4]; 则生成的 X 和 Y 都是为 3X3 维的矩阵,

>> [x y]=meshgrid(a,b) x = 1 2 3 1 2 3 1 2 3 y = 2 2 2 3 3 3 4 4 4

  • exp1_2:生成二维网格,用法为:[x y]=meshgrid(a b); % a 和b是一维数组,如a=[1 2 3]; b= [2 3]; 则生成的 X 和 Y 都是为 3X2 维的矩阵,

>> [x y]=meshgrid(a,b) x = 1 2 3 1 2 3 y = 2 2 2 3 3 3

  • exp1_3:生成二维网格,用法为:[x y]=meshgrid(a b); % a 和b是一维数组,如a=[1 2]; b= [2 3 4]; 则生成的 X 和 Y 都是为 2X3 维的矩阵,

>> [x y]=meshgrid(a,b) x = 1 2 1 2 1 2 y = 2 2 3 3 4 4

——————————————————————

meshgrid 函数用来生成网格矩阵,可以是三维网格矩阵。

  • exp2_1:生成三维网格,

x 的每行都是 1 2 3,共三行,y 每列都是2 3 4,共三列。

举个实例:估计函数:x*exp(-x^2-y^2),取值范围 -2 < x < 2, -2 < y < 2,

[X,Y] = meshgrid(-2:.2:2, -2:.2:2);

Z = Y .* exp(-X.^2 – Y.^2);

mesh(X,Y,Z)

对于三维网格,生成方式与二维一样 :[x y z]=meshgrid(a b c) ; %算出的结果根据二维的类推

附件:二维网格例子的结果图。

——————————————————————

meshgrid和ndgrid的区别及用法

实例:z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y), 用三次样条插值方法得到三维数据网格的样条插值拟合,并绘制曲面 x0=-3:.6:3; y0=-2:.4:2; [x,y]=ndgrid(x0,y0);

%{

>> x0=-3:.6:3;y0=-2:.4:2; [x,y]=ndgrid(x0,y0) x = Columns 1 through 6 -3.0000 -3.0000 -3.0000 -3.0000 -3.0000 -3.0000 -2.4000 -2.4000 -2.4000 -2.4000 -2.4000 -2.4000 -1.8000 -1.8000 -1.8000 -1.8000 -1.8000 -1.8000 -1.2000 -1.2000 -1.2000 -1.2000 -1.2000 -1.2000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 0 0 0 0 0 0 0.6000 0.6000 0.6000 0.6000 0.6000 0.6000 1.2000 1.2000 1.2000 1.2000 1.2000 1.2000 1.8000 1.8000 1.8000 1.8000 1.8000 1.8000 2.4000 2.4000 2.4000 2.4000 2.4000 2.4000 3.0000 3.0000 3.0000 3.0000 3.0000 3.0000 Columns 7 through 11 -3.0000 -3.0000 -3.0000 -3.0000 -3.0000 -2.4000 -2.4000 -2.4000 -2.4000 -2.4000 -1.8000 -1.8000 -1.8000 -1.8000 -1.8000 -1.2000 -1.2000 -1.2000 -1.2000 -1.2000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 0 0 0 0 0 0.6000 0.6000 0.6000 0.6000 0.6000 1.2000 1.2000 1.2000 1.2000 1.2000 1.8000 1.8000 1.8000 1.8000 1.8000 2.4000 2.4000 2.4000 2.4000 2.4000 3.0000 3.0000 3.0000 3.0000 3.0000 y = Columns 1 through 6 -2.0000 -1.6000 -1.2000 -0.8000 -0.4000 0 -2.0000 -1.6000 -1.2000 -0.8000 -0.4000 0 -2.0000 -1.6000 -1.2000 -0.8000 -0.4000 0 -2.0000 -1.6000 -1.2000 -0.8000 -0.4000 0 -2.0000 -1.6000 -1.2000 -0.8000 -0.4000 0 -2.0000 -1.6000 -1.2000 -0.8000 -0.4000 0 -2.0000 -1.6000 -1.2000 -0.8000 -0.4000 0 -2.0000 -1.6000 -1.2000 -0.8000 -0.4000 0 -2.0000 -1.6000 -1.2000 -0.8000 -0.4000 0 -2.0000 -1.6000 -1.2000 -0.8000 -0.4000 0 -2.0000 -1.6000 -1.2000 -0.8000 -0.4000 0 Columns 7 through 11 0.4000 0.8000 1.2000 1.6000 2.0000 0.4000 0.8000 1.2000 1.6000 2.0000 0.4000 0.8000 1.2000 1.6000 2.0000 0.4000 0.8000 1.2000 1.6000 2.0000 0.4000 0.8000 1.2000 1.6000 2.0000 0.4000 0.8000 1.2000 1.6000 2.0000 0.4000 0.8000 1.2000 1.6000 2.0000 0.4000 0.8000 1.2000 1.6000 2.0000 0.4000 0.8000 1.2000 1.6000 2.0000 0.4000 0.8000 1.2000 1.6000 2.0000 0.4000 0.8000 1.2000 1.6000 2.0000

%} z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y); sp=csapi({x0,y0},z); fnplt(sp);

附件:san维网格例子的结果图。

代码语言:javascript
复制
                      其实,对于2D,3D使用meshgrid和ndgrid都可以,但要注意:          [X1,X2,X3] = NDGRID(x1,x2,x3)<=>[X2,X1,X3] = MESHGRID(x2,x1,x3)          即x和y轴要反向        
代码语言:javascript
复制
                      为何呢?帮助说的很清楚:因为NDGRID适用于n维空间,而meshgrid适用于笛卡尔空间。          meshgrid和ndgrid的用法不同之处在于:2D、3D都可以使用(区别是x轴,y轴的转换),但对于4D、5D...只能使用ndgrid.          为什么要使用meshgrid?          matlab使用矩阵的方式进行运算,对于2D而言,如果采样10个点(指x,y轴),那么对于x=第一个采样点,反映到矩阵就是10个,即不管y是哪个值,x的第一采样点保持不变;对y是同理。因此,2D产生的x和y都是两维矩阵。                               最后给一个实例,说明两者在这里是通用的:        	x0=-3:.6:3;	y0=-2:.4:2;	[x,y]=ndgrid(x0,y0);	[Y,X]=meshgrid(y0,x0);	z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y);	Z=(X.^2-2*X).*exp(-X.^2-Y.^2-X.*Y);	SP1=csapi({x0,y0},z);	SP2=csapi({x0,y0},Z);	subplot(121),fnplt(SP1);	subplot(122),fnplt(SP2);

附件:meshgrid和ndgrid网格例子的结果比较图

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/131325.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ——————————————————————
  • meshgrid和ndgrid的区别及用法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档