添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Matlab自带画图的工具是基于窗口( figure )和 图像 ( axes )的, 在每个窗口( figure )中可以建立 m × n 图像 ( axes ), 其中相邻的 图像 可以合并成一个较大的 图像 , 方便排版.

Matlab绘图窗口和 图像 的样式都有极大的自定义空间, 几乎可以满足任何类型的使用需求, 在绘制完成后还可以直接以矢量图或者矢量PDF的形式导出, 从而获得高质量的成品 图像 .

每次在某一个子 图像 上绘制点/线/面时都可以得到这个对象的句柄(作为返回值), 通过对象句柄可以修改对象属性(比如外观或者节点坐标), 也可以获得对象当前的状态.

绘图控制指令及函数

subplot(P) 在当前窗口的第 P 区作图. 需要注意的是 P 可以是一个向量, 例如 P = [1,2] 将会将第一第二个子 图像 合并. 同时 subplot() 函数会返回当前 图像 句柄 清空当前 窗口 清空当前 图像 hold on 绘制新对象时保留画布上的旧 图像 hold off 绘制新对象时清除画布上的旧 图像 hold(AX,'on')
hold(AX,'off') 通过 axes 句柄指定 hold on/off 的作用对象 delete(axes) 删除句柄为 axes 的图形对象 close
close(gcf) 关闭当前绘图窗口 close(figure(N)) 关闭编号为 N 的绘图窗口

最通用的绘图函数, 可以接受一个向量或两个向量作为坐标输入, 但是两个向量作为输入时这两个向量必须有相同的长度

>> x = -pi:pi/10:pi;                          % 从-pi到pi等间距(步长 pi/10)取点
>> y = tan(sin(x)) - sin(tan(x));             % 计算函数值
>> plot(x,y,'-rs','LineWidth',2,...
                  'MarkerEdgeColor','k',...
                  'MarkerFaceColor','b',...
                  'MarkerSize',6)
subplot(2, 2, 3);
R =sqrt(X.^2 + Y.^2) + eps;
[X,Y]=meshgrid(-8:0.5:8);
Z = sin(R)./R;
surf(X, Y, Z);
title("surf()");
  

示例: 同一函数在不同画法下的外观

R =sqrt(X.^2 + Y.^2) + eps;
[X,Y] = meshgrid(-8:0.5:8);
Z = sin(R)./R;
subplot(2, 2, 1);
mesh(X, Y, Z);
title("mesh( )");
subplot(2, 2, 2);
meshz(X, Y, Z);
title("meshz( )");
subplot(2, 2, 3);
meshc(X, Y, Z);
title("meshc( )");
subplot(2, 2, 4);
surfc(X, Y, Z);
title("surfc( )");
[x,y]=meshgrid(-2:0.01:2);
z1 = x.^2 - 2*y.^2;
z2 = 2*x - 3*y;
mesh(x,y,z1);
mesh(x,y,z2);
cr  = abs(z1 - z2) < 0.01;
avg = (z1+z2)./2;
plot3(x(cr), y(cr), avg(cr),'*k');
subplot(2,2,4);
[c,h] = contourf(peaks); % 填色等值线 
clabel(c,h);             % 标记等值线 
colorbar;
      

例: contourslice绘制flow场剖面等值线

[X,Y,Z,V] = flow;          % 提取数据
Sx=1:9; Sy=[]; Sz=0;       % 选取剖面位置
cvals = linspace(-8,2,10); % 取10条等值线
contourslice(X,Y,Z,V,Sx,Sy,Sz,cvals);
axis([0,10,-3,3,-3,3]);
daspect([1,1,1]);  % 坐标轴的纵横比
campos([0,-20,7]); % 设置相机的位置
box on             % 显示坐标盒子
      

例: contourslice绘制flow场剖面等值线

[x,y,z] = meshgrid(-2:.2:2);
v=x.*exp(-x.^2-y.^2-z.^2); % 生成三维标量场
slice(v,[5 15],15,10);     % 绘制剖面颜色图
axis([0 21 0 21 0 21]);
hold on
colorbar('horiz');
colorbar('vert');
view([-25 65]);
  

例: 使用 streamline 和 quiver 共同表现二维矢量场

hold on
[x,y] = meshgrid(0:0.1:1,0:0.1:1);
u=x; v=-y;          % 生成矢量场
startx = 0.1:0.1:1; % 设定流线起点阵列
starty = ones(size(startx));
streamline(x,y,u,v,startx,starty);
                    % 绘制流线图
quiver(x,y,u,v);    % 绘制箭头图

在 Matlab 命令界面中输入 help 即可获得对某个函数的描述, 包含所有可能的引用方法, 甚至可以提供联想建议.

实际上, Matlab help 命令足以解决绝大多数问题, 熟练使用 help 命令可以大大减少上网搜索浪费的时间.

>> help linspace
 linspace Linearly spaced vector.
    linspace(X1, X2) generates a row vector of 100 linearly
    equally spaced points between X1 and X2.
    linspace(X1, X2, N) generates N points between X1 and X2.
    For N = 1, linspace returns X2.
    Class support for inputs X1,X2:
       float: double, single
    See also logspace, colon.
    Reference page for linspace
    Other functions named linspace
                    Reposting of any article shall be premitted by the author unless otherwise claimed.
                    除非另有声明,转载本站任何文章均需征得作者同意.
                    Contact: admin@yuxuanzhang.net