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

2022-08-11 社会 109阅读
  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

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com