首页 > 编程笔记 > MATLAB笔记 阅读:129

MATLAB quiver()和quiver3()函数:绘制箭头图(附带实例)

箭头图很像数学中的向量,即它的箭头方向表示向量的方向,箭头的长短表示向量的大小。

在 MATLAB 中,绘制箭头图的函数是 quiver() 和 quiver3(),前者绘制的是二维图形,后者绘制的是三维图形。它们的调用格式也十分相似,只是后者比前者多一个坐标参数,因此只介绍一下 quiver() 函数的调用格式及说明,如下表所示。

表:quiver() 函数调用格式及说明
调用格式 说明
quiver(U,V) 其中 U、V 为 m×n 矩阵,该函数格式的功能为在 xy 平面等距点处绘制由 U 和 V 定义的向量
quiver(X,Y,U,V) 若 X 为 n 维向量,Y 为 m 维向量,U、V 为 m×n 矩阵,则绘出由 X、Y 确定的每一个点处由 U 和 V 定义的向量
quiver(...,scale) 自动对向量的长度进行处理,使之不会重叠。可以对 scale 进行取值。若 scale=2,则向量长度伸长 2 倍;若 scale=0,则如实绘出向量图
quiver(...,LineSpec) 用 LineSpec 指定的线型、符号、颜色等绘制向量图
quiver(...,LineSpec,'filled') 对用 LineSpec 指定的记号进行填充
quiver(...,'PropertyName',PropertyValue,...) 为该函数创建的箭头图对象指定属性名称和属性值对组
quiver(ax,...) 在 ax 指定的坐标区中绘制图形
h = quiver(...) 返回每个向量图的句柄

quiver() 与 quiver3() 这两个函数经常与其他的绘图函数配合使用。

【实例】绘制 z = xe^(-x^2-y^2) 上的法线方向向量。MATLAB 程序如下:
>> close all                             % 关闭当前已打开的文件
>> clear                                 % 清除工作区的变量
>> [X,Y] = meshgrid(-2:0.25:2,-1:0.2:1); % 通过向量定义二维网格数据X、Y
>> Z = X.* exp(-X.^2 - Y.^2);            % 通过网格数据X、Y定义函数表达式 Z,得到二维矩阵Z
>> [U,V,W] = surfnorm(X,Y,Z);            % 计算网格面坐标(X,Y,Z)处的向量分量(U,V,W)
>> subplot(1,2,1),                       % 将视图分割为1×2的窗口,在第1个窗口中绘图
>> [DX,DY] = gradient(Z,.2,.2);          % 计算Z矩阵2个维度上的二维数值梯度的x分量DX和y分量DY
>> quiver(X,Y,DX,DY)                     % 根据二维坐标点(X,Y)与该坐标点的二维分量(DX,DY)绘制二维箭头图
>> title('二维法向向量图')               % 为图形添加标题
% 在第2个窗口中绘图,根据三维坐标点(X,Y,Z)与该坐标点的三维分量(U,V,W)绘制三维箭头图
>> subplot(1,2,2),quiver3(X,Y,Z,U,V,W,0.5)
>> hold on                               % 打开图形保持命令
>> surf(X,Y,Z)                           % 绘制由X、Y和Z指定的曲面
>> axis([-2 2 -1 1 -.6 .6])              % 定义三维X、Y、Z坐标轴的最大值和最小值,在该区域内显示图形
>> hold off                              % 关闭图形保持命令
>> title('三维法向向量图')               % 为图形添加标题
运行结果如下图所示:


图 1 法向向量图

相关文章