MATLAB中hold on和figure的区别?画三维图为什么一定要meshgrid?

我的理解是二者均为将不同的图形画在同一个窗口中,有什么区别吗?... 我的理解是二者均为将不同的图形画在同一个窗口中,有什么区别吗? 展开
 我来答
xuzhexin0913
2015-10-02 · TA获得超过573个赞
知道小有建树答主
回答量:241
采纳率:100%
帮助的人:130万
展开全部
  1. figure表示新建一个图窗口,以免后续的绘图语句覆盖原图;hold on表示在原图的基础上绘制新的图像

参考代码

clc
clear all
close all
tic
n = 10;    % 数据点数
x = 1:n;    % 横坐标
y1 = randi(10, 1, n); % 纵坐标
y2 = randi(10, 1, n); % 纵坐标
figure
plot(x, y1);
figure    % 想要看hold on的效果,请将改行注释掉,并取消下一行的注释
% hold on
plot(x, y2, 'r');
toc

用figure的效果图:生成两张图

用hold on的效果:两条曲线画在一张图上

 

2. meshgrid用来生成网格矩阵,简单地讲,就是把给定的x和y中元素的两两组合都生成出来,这样每一对(x,y)再计算一个对应的z,显然这样得到的是一个z的曲面。但该语句不是必须的,有时候我们只想获得一条三维曲线而已,并不想知道所有x, y元素两两组合的结果是什么,组合我们已经定义好了

 

参考代码:

clc
clear all
close all
tic
n = 10;   
x = 1:n;      % x坐标
y = 1:n;  % y坐标
%% 
% meshgrid演示
[X, Y] = meshgrid(x, y); %  meshgrid 函数用来生成网格矩阵
Z = X.^2 + Y;
figure
mesh(X, Y, Z);
grid on
xlabel('x');
ylabel('y');
zlabel('z');
%% 
% 不用meshgrid的情况
z = x.^2 + y;
figure
% mesh(x, y, z);   % 没有meshgrid生成底面矩阵时,该句出错
plot3(x, y, z);    % 一组(x, y)对应一个z值,因此x和y元素个数必须一致
grid on
xlabel('x');
ylabel('y');
zlabel('z');
toc

效果图

 

参考资料:

http://baike.baidu.com/link?url=DhcrEMb19yeJJKZ8JKBP4NsMXKdqITeFJ-VbxuRtRsU2OHRPm4oFNH9yK1EjrUslmB2cR0L2k134Z10_gPFipK

我行我素850915
2015-08-05 · TA获得超过8228个赞
知道大有可为答主
回答量:5788
采纳率:77%
帮助的人:1444万
展开全部
你的问题是两个,先说第一个,区别:figure用于生成一个图窗,可单独使用,而hold on是先用figure生成一个图窗后,要把多个数据画进去的时候才用的,且只用在figure后面,若不画多个数据时则不加hold on,因此,hold on不能单独使用。
第二个,画三维图须有x,y,z坐标,当画曲线时,x,y,z个数相等,当画曲面时,x,y,z是二维矩阵。而定义x,y时,如:x=0:0.5:10;y=1:0.2:3:都是矢量,不是矩阵,若要化为矩阵,就要用meshgrid,如:x=0:0.5:10;y=1:0.2:3;[x,y]=meshgrid(x,y);z=x.*y;这样就得到了矩阵x,y,z ,能画曲面了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式