MATLAB中hold on和figure的区别?画三维图为什么一定要meshgrid?
发布网友
发布时间:2022-03-30 04:24
我来回答
共2个回答
热心网友
时间:2022-03-30 05:53
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://ke.baidu.com/link?url=DhcrEMb19yeJJKZ8JKBP4NsMXKdqITeFJ-VbxuRtRsU2OHRPm4oFNH9yK1EjrUslmB2cR0L2k134Z10_gPFipK
热心网友
时间:2022-03-30 07:11
你的问题是两个,先说第一个,区别: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 ,能画曲面了。