matlab meshgrid_MATLAB-基础画图meshgrid

在看三维图像相关的代码时,理解的不太透彻,有时间了就看了几本书,巩固一下。

meshgrid()很常见的一个函数,见下图

ce7543cdc3a951f41c92ddff1ba9e177.png

第一句话很关键啊,其实就是产生坐标,因为二维图像的时候,用的是向量来表示坐标点,那么三维图像的时候,坐标点就应该用矩阵来表示,这是很自然的一件事情,但是落实到编程实现的时候,却不太直观,

如下是我们想象中的坐标和函数值

但计算机处理的时候,不是这样的。他会把

的坐标分开来存

可以想象到的是,

是坐标点的缘故,X的每一列肯定是同一个值,Y的每一行也是同一个值。
%%

2340150127bb457c4885b65212f2f601.png
X =
   -2.0000   -1.5000   -1.0000   -0.5000         0    0.5000    1.0000    1.5000    2.0000
   -2.0000   -1.5000   -1.0000   -0.5000         0    0.5000    1.0000    1.5000    2.0000
   -2.0000   -1.5000   -1.0000   -0.5000         0    0.5000    1.0000    1.5000    2.0000
   -2.0000   -1.5000   -1.0000   -0.5000         0    0.5000    1.0000    1.5000    2.0000
   -2.0000   -1.5000   -1.0000   -0.5000         0    0.5000    1.0000    1.5000    2.0000
   -2.0000   -1.5000   -1.0000   -0.5000         0    0.5000    1.0000    1.5000    2.0000
   -2.0000   -1.5000   -1.0000   -0.5000         0    0.5000    1.0000    1.5000    2.0000
   -2.0000   -1.5000   -1.0000   -0.5000         0    0.5000    1.0000    1.5000    2.0000
   -2.0000   -1.5000   -1.0000   -0.5000         0    0.5000    1.0000    1.5000    2.0000

Y =
   -2.0000   -2.0000   -2.0000   -2.0000   -2.0000   -2.0000   -2.0000   -2.0000   -2.0000
   -1.5000   -1.5000   -1.5000   -1.5000   -1.5000   -1.5000   -1.5000   -1.5000   -1.5000
   -1.0000   -1.0000   -1.0000   -1.0000   -1.0000   -1.0000   -1.0000   -1.0000   -1.0000
   -0.5000   -0.5000   -0.5000   -0.5000   -0.5000   -0.5000   -0.5000   -0.5000   -0.5000
         0         0         0         0         0         0         0         0         0
    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000
    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000
    1.5000    1.5000    1.5000    1.5000    1.5000    1.5000    1.5000    1.5000    1.5000
    2.0000    2.0000    2.0000    2.0000    2.0000    2.0000    2.0000    2.0000    2.0000

顺便又发现了下面的不同。

plot(X,Y,'o');
plot(X,Y);

e19564b828084b3d25c398eaa4de0aeb.png
plot(X,Y);

很奇怪为什么添加了一个参数之后,线条没有了,变成了一条条垂直线。事出必有因,查查plot函数把。

f111e48fd0b262a4f6db5d9166029907.png

58eea8bfbddf0bd66b0a9a72f1b0ed3f.png

应该就是上面一段话了,猜测三个参数如果只写一个的话会使得其他两个参数为空?也不对,先这样理解吧。

回归正题,有了坐标点,以及函数关系式,可以画图了。

379a6694ef45680afbb6028270871871.png
%%
clc
clear all
close all
[X,Y] = meshgrid([-1:0.2:1]);%创建网格数据
Z = X.*(-X.^2 - Y.^2);
plot3(X,Y,Z);
xlabel('x');
ylabel('y');
zlabel('z');

30648f3be0402051d25343daa3576b33.png
plot3(X,Y,Z)函数产生的图像
%%

edd385a0e54d01df70915223cc821588.png
mesh(X,Y,Z)产生的图像

可以发现plot3丢失了许多细节,不太好看。

b13a7a929e984195b6c74220ab37b035.png
%%
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值