[MATLAB]中meshgrid函数的用法与实践(学习笔记)

article/2025/8/26 16:04:17

今天在看点目标成像仿真程序的时候,看到了meshgrid函数,看了matlab的帮助文档后理解了一点,特此记录学习过程。

目录

  • 一、meshgrid函数
  • 二、举例验证
  • 三、创建二维网格绘制曲面图
  • 四、总结
  • 五、meshgrid函数源代码(仅供参考):


一、meshgrid函数

meshgrid函数是MATLAB中用于生成网格采样点数的函数,通常进行2D、3D图形的绘制。

1、【X,Y】 = meshgrid(x,y) :基于向量x和y中包含的坐标返回二维网格坐标。X是一个矩阵,每一行是x的一个副本,Y也是一个矩阵,每一列是y的一个副本。坐标X和Y表示的网格有length(y)个行和length(x)个列。

2 、[X,Y] = meshgrid(x) 与 [X,Y] = meshgrid(x,x)相同,返回网格大小为length(x)*length(x)的方形网格矩阵。

3、 [X,Y,Z] = meshgrid(x,y,z),返回由向量x,y,z定义的三维网格坐标,X,Y和Z表示的网格大小为length(x)*length(y)*length(z)。


二、举例验证

1.【X,Y】 = meshgrid(x,y) , 代码如下:

a 、b矩阵个数相同:

a = [1 2 3 4];
b = [5 6 7 8];
[A,B] = meshgrid(a,b)

结果:

A =1     2     3     41     2     3     41     2     3     41     2     3     4B =5     5     5     56     6     6     67     7     7     78     8     8     8>> 

a 、b矩阵数量不同:

a = [1 2 3];
b = [4 5 6 7];
[A,B] = meshgrid(a,b)
A =1     2     31     2     31     2     31     2     3B =4     4     45     5     56     6     67     7     7>> 

2、【X,Y】 = meshgrid(x), 代码如下:

x  = [1 2 3];
[X,Y] = meshgrid(x)
X =1     2     31     2     31     2     3Y =1     1     12     2     23     3     3
>>
x = [1 2 3];
>> [X,Y] = meshgrid(x,x)X =1     2     31     2     31     2     3Y =1     1     12     2     23     3     3>> 

三、创建二维网格绘制曲面图

使用均匀分布的x和y坐标在-4到4之间创建二维网格:

代码如下:

x = -4:0.2:4;
y = x;
[X,Y] = meshgrid(x);
F = X.*exp(-X.^2 - Y.^2);
surf(X,Y,F);

在这里插入图片描述


四、总结

为什么要使用meshgrid?
matlab使用矩阵的方式进行运算,对于2D而言,如果采样10个点(指x,y轴),那么对于x=第一个采样点,反映到矩阵就是10个,即不管y是哪个值,x的第一采样点保持不变;对y是同理。因此,2D产生的x和y都是两维矩阵。


五、meshgrid函数源代码(仅供参考):

源代码:
function [xx,yy,zz] = meshgrid(x,y,z)
%MESHGRID Cartesian grid in 2-D/3-D space
% [X,Y] = MESHGRID(xgv,ygv) replicates the grid vectors xgv and ygv to
% produce the coordinates of a rectangular grid (X, Y). The grid vector
% xgv is replicated numel(ygv) times to form the columns of X. The grid
% vector ygv is replicated numel(xgv) times to form the rows of Y.
%
% [X,Y,Z] = MESHGRID(xgv,ygv,zgv) replicates the grid vectors xgv, ygv, zgv
% to produce the coordinates of a 3D rectangular grid (X, Y, Z). The grid
% vectors xgv,ygv,zgv form the columns of X, rows of Y, and pages of Z
% respectively. (X,Y,Z) are of size numel(ygv)-by-numel(xgv)-by(numel(zgv).
%
% [X,Y] = MESHGRID(gv) is equivalent to [X,Y] = MESHGRID(gv,gv).
% [X,Y,Z] = MESHGRID(gv) is equivalent to [X,Y,Z] = MESHGRID(gv,gv,gv).
%
% The coordinate arrays are typically used for the evaluation of functions
% of two or three variables and for surface and volumetric plots.
%
% MESHGRID and NDGRID are similar, though MESHGRID is restricted to 2-D
% and 3-D while NDGRID supports 1-D to N-D. In 2-D and 3-D the coordinates
% output by each function are the same, the difference is the shape of the
% output arrays. For grid vectors xgv, ygv and zgv of length M, N and P
% respectively, NDGRID(xgv, ygv) will output arrays of size M-by-N while
% MESHGRID(xgv, ygv) outputs arrays of size N-by-M. Similarly,
% NDGRID(xgv, ygv, zgv) will output arrays of size M-by-N-by-P while
% MESHGRID(xgv, ygv, zgv) outputs arrays of size N-by-M-by-P.
%
% Example: Evaluate the function x*exp(-x^2-y^2)
% over the range -2 < x < 2, -4 < y < 4,
%
% [X,Y] = meshgrid(-2:.2:2, -4:.4:4);
% Z = X .* exp(-X.^2 - Y.^2);
% surf(X,Y,Z)
%
%
% Class support for inputs xgv,ygv,zgv:
% float: double, single
% integer: uint8, int8, uint16, int16, uint32, int32, uint64, int64
%
% See also SURF, SLICE, NDGRID.
% Copyright 1984-2013 The MathWorks, Inc.
if nargin==0 || (nargin > 1 && nargout > nargin)
error(message('MATLAB:meshgrid:NotEnoughInputs'));
end
if nargin == 2 || (nargin == 1 && nargout < 3) % 2-D array case
if nargin == 1
y = x;
end
if isempty(x) || isempty(y)
xx = zeros(0,class(x));
yy = zeros(0,class(y));
else
xrow = full(x(:)).'; % Make sure x is a full row vector.
ycol = full(y(:)); % Make sure y is a full column vector.
xx = repmat(xrow,size(ycol));
yy = repmat(ycol,size(xrow));
end
else % 3-D array case
if nargin == 1
y = x;
z = x;
end
if isempty(x) || isempty(y) || isempty(z)
xx = zeros(0,class(x));
yy = zeros(0,class(y));
zz = zeros(0,class(z));
else
nx = numel(x);
ny = numel(y);
nz = numel(z);
xx = reshape(full(x),[1 nx 1]); % Make sure x is a full row vector.
yy = reshape(full(y),[ny 1 1]); % Make sure y is a full column vector.
zz = reshape(full(z),[1 1 nz]); % Make sure z is a full page vector.
xx = repmat(xx, ny, 1, nz);
yy = repmat(yy, 1, nx, nz);
zz = repmat(zz, ny, nx, 1);
end
end

http://chatgpt.dhexx.cn/article/RpD8vn5q.shtml

相关文章

计算机网络原理(交换机,路由器详解)

前言 本人是大一新生&#xff0c;对网络知识的了解也只是一知半解&#xff0c;虽然煞费苦心&#xff0c;但这篇文章中肯定还会有很多错误&#xff0c;希望大佬们发现问题后能予以纠正 网络协议 这些东西主要涉及在局域网&#xff0c;osi模型中处在第二层和第三层&#xff0c…

交换机和路由器区别

交换机路由器简单理解 以快递为例&#xff1a; 首先我们要把我们传输的数据就比拟成收发的快递货物。 然后我们要知道的是&#xff0c;我们手中的手机和电脑等一些使用设备&#xff0c;它们都有一个固定的MAC地址&#xff0c;这个MAC地址就相当于快递系统中的接收人&#xf…

以太网交换机和路由器的区别(转载)

以太网交换机和路由器是两个不同的网络设备&#xff0c;很多朋友却弄不清楚它们彼此之间的区别&#xff0c;下面简单介绍下。 在osi七层模型上来分析&#xff0c;交换机在第二层工作&#xff0c;路由器在第三层上工作。但是随着技术的发展&#xff0c;一些交换机集成了一些第三…

交换机和路由器有什么区别

交换机 (英文&#xff1a;Switch&#xff0c;意为“开关”)是一种用于电信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。其他常见的还有电话语音交换机、光纤交换机等。 路由器 &#xff08;Router&#xf…

交换机与路由器技术

交换机的基本配置 一、思科设备命令行基础 1、进入设备命令行界面 设备支持命令行 去看设备上的接口&#xff0c;是否有console 需要用超级终端进行连接 puttsecret CRTXshell 2、命令行基础 思科设备上的命令行模式 用户模式&#xff1a;查看统计信息(一般情况下用的非常…

思科交换机和路由器

交换机 进入模式 no switchport: no switchport这条命令的意思是&#xff1a;可以把二层接口改为三层接口&#xff0c;也就是说相当于一个路由器上的接口。no switch 实际上是no switchport的简写&#xff0c;而switchport就是交换口&#xff0c;也就是二层接口&#xff0c;…

三层交换机与路由器的区别

一、三层交换机 三层交换机就是具有部分路由器功能的交换机&#xff0c;工作在OSI网络标准模型的第三层&#xff1a;网络层。三层交换机的最重要目的是加快大型局域网内部的数据交换&#xff0c;所具有的路由功能也是为这目的服务的&#xff0c;能够做到一次路由&#xff0c;多…

交换机和路由器的区别是什么?

交换机和路由器的区别&#xff1a; ◆ 路由器可以给你的局域网自动分配IP&#xff0c;虚拟拨号&#xff0c;就像一个交通警察&#xff0c;指挥着你的电脑该往哪走&#xff0c;你自己不用操心那么多了。 交换机只是用来分配网络数据的。 ◆ 路由器可以把一个IP分配给很多个主机…

网络/交换机和路由器区别

计算机网络往往由许多种不同类型的网络互连连接而成。如果几个计算机网络只是在物理上连接在一起&#xff0c;它们之间并不能进行通信&#xff0c;那么这种“互连”并没有什么实 际意义。因此通常在谈到“互连”时&#xff0c;就已经暗示这些相互连接的计算机是可以进行通信的&…

交换机和路由器

交换机只有交换的功能&#xff0c;用于组建局域网 路由器用来连接外网&#xff08;局域网和互联网相连接&#xff09;&#xff0c;路由器也叫网关 也就是说路由器是用来连接两个子网&#xff0c;交换机是用来连接一个子网内不同的计算机 路由器是基于ip寻址&#xff0c;交换机…

【交换机和路由器的区别】

一.交换机? 交换机的作用:把数据包发送到正确的位置 交换机工作的方式:依照MAC地址和物理端口的关系映射表,也叫MAC地址表,通过数据包上的目标MAC地址,找到他对应的物理端口. 1.物理端口如何和MAC地址建立映射关系? 通过网线! 一个交换机本身就带有很多端口,每一个端口有自己…

浅谈交换机和路由器的区别

网络在我们的生活学习中已经成为了必须的东西&#xff0c;也许 ”世界上最遥远的距离就是没网“&#xff0c;而路由器和交换机这两种联网的中继设备最常见。如下图左为交换机&#xff0c;右为路由器。那么到底路由器和交换机有哪些区别呢&#xff1f;他们在网络的组建方面各自扮…

交换机与路由器的配置

交换机与路由器的配置 一、交换机的基本配置 配置enable口令、密码和主机名 Switch> (用户执行模式提示符) Switch>enable (进入特权模式) Switch# (特权模式提示符) Switch#config terminal (进入配置模式) Switch(config)#enable password cisco (设置enable passwor…

交换机和路由器到底有什么区别???

我&#xff1a;度娘度娘&#xff0c;交换机和路由器的区别是什么呢&#xff1f; 度娘&#xff1a;一个工作在第二层数据链路层&#xff0c;一个工作在第三层网络层。 我&#xff1a;哈&#xff1f;那工作在不同层会有什么区别&#xff1f;为什么要工作在不同层&#xff1f; …

关于路由器和交换机的区别图解(总结)

简介 路由器是在交换机的基础上发展而来&#xff1a; 路由器又被称为网关设备&#xff0c;用于连接多个逻辑上分开的网络&#xff0c;它是不同网段通信的桥梁。路由器是在交换机的基础上发展而来&#xff0c;它们之间在概念上有一定的重叠但也有很大的不同&#xff0c;交换机泛…

路由器和交换机的区别

相信有很多人在学习网络的过程中&#xff0c;都会对路由器与交换机的区别与联系感到疑惑不解&#xff0c;因为这两台设备的功能看起来似乎一样。然而&#xff0c;其实路由器与交换机大有不同&#xff0c;下面是我对此的一些理解&#xff0c;希望能够帮助到你&#xff01; 它们…

交换机和路由器的区别

交换机(Switch) 是一种基于MAC(网卡的硬件地址)识别&#xff0c;能完成封装转发数据包功能的网络设备。交换机可以“学习”MAC地址&#xff0c;并把其存放在内部地址表中&#xff0c;通过在数据帧的始发者和目标接收者之间建立临时的交换路径&#xff0c;使数据帧直接由源地址到…

计算机网络-路由器和交换机的区别

经过了前面两篇博客&#xff0c;我们大概都认识了交换机和路由器了&#xff0c;那么再总结一下交换机和路由器的区别。 交换机和路由器都是网络硬件&#xff0c;那么主要区别是什么呢&#xff1f;按我理解&#xff0c;交换机是用来连接局域网的&#xff0c;路由器是用来连接互联…

常用第三方接口

作者&#xff1a;知乎用户 链接&#xff1a;https://www.zhihu.com/question/21608863/answer/123009622 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 聚合数据、百度APIStore、Apix、通联数据、HaoService、数说聚…

java对接第三方接口

1.准备与第三方接口对接的账号 配置到了Apollo上面 Value("${taofake.appId}")private String appId;Value("${taofake.url}")private String url;Value("${taofake.appSecret}")private String appSecret;2.准备用于接受接口返回结果的实体类 …