MATLAB stem()函数的用法(附带实例)
用线条显示数据点与 x 轴的距离,用一个小圆圈(默认标记)或其他指定的标记符号与线条相连,并在 y 轴上标记数据点的值,这样的图形称为火柴杆图。
在 MATLAB 二维图形下,实现这种操作的函数是 stem() ,它的调用格式及说明如下表所示:
【实例】绘制 y=sinx,y=cosx 的火柴杆图。MATLAB 程序如下:
运行结果如下图所示:

图 1 火柴杆图
【实例 2】抽取下面矩阵的列数据绘制火柴杆图。
MATLAB程序如下:

图 2 火柴杆图形
在 MATLAB 二维图形下,实现这种操作的函数是 stem() ,它的调用格式及说明如下表所示:
调用格式 | 说明 |
---|---|
stem(Y) | 如果 Y 是向量,按 Y 中元素的顺序画出火柴杆图,在 x 轴上,火柴杆之间的距离相等;若 Y 为矩阵,则把 Y 分成几个行向量,在同一横坐标的位置上画出每一个行向量元素对应的火柴杆 |
stem(X,Y) | 在 X 指定的值的位置画出向量 Y 的火柴杆图,其中 X 与 Y 为同型的向量或矩阵 |
stem(...,'filled') | 指定是否对火柴杆末端的“火柴头”填充颜色 |
stem(...,LineSpec) | 用参数 LineSpec 指定线型、标记符号和火柴头的颜色画火柴杆图 |
stem(...,Name,Value) | 使用一个或多个名称-值对组参数修改火柴杆图 |
stem(ax,...) | 将图形绘制到 ax 指定的坐标区中,而不是当前坐标区(gca)中 |
h = stem(...) | 返回火柴杆图的 line 图形对象句柄向量 |
【实例】绘制 y=sinx,y=cosx 的火柴杆图。MATLAB 程序如下:
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 >> X = linspace(0,2*pi,50)'; % 创建0~2π的列向量X,元素个数为50 >> Y1 = sin(X); % 定义函数表达式 Y1 >> Y2 = cos(X); % 定义函数表达式 Y2 >> subplot(1,3,1),stem(X) % 创建包含 50 个数据值的向量X的火柴杆图 >> subplot(1,3,2),stem(X,Y1,'->') % 创建正弦函数的火柴杆图,设置线型与火柴头的形状 >> subplot(1,3,3),stem(X,Y2,':p') % 创建余弦函数的火柴杆图,设置线型与火柴头的形状
运行结果如下图所示:

图 1 火柴杆图
【实例 2】抽取下面矩阵的列数据绘制火柴杆图。

MATLAB程序如下:
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 >> Y=[5 3 8;7 4 7;16 5 4;17 6 8;19 9 4;20 16 8]; % 直接创建矩阵Y >> Y1=Y(:,1)' % 抽取矩阵Y的第1列,求逆矩阵,得到行向量Y1 Y = 5 7 16 17 19 20 >> Y2=Y(:,2)' % 抽取矩阵Y的第2列,求逆矩阵,得到行向量Y2 Y2 = 3 4 5 6 9 16 >> Y3=Y(:,3)' % 抽取矩阵Y的第3列,求逆矩阵,得到行向量Y3 Y3 = 8 7 4 8 4 8 >> subplot(1,3,1),stem(Y1) % 绘制Y1的火柴杆图 >> subplot(1,3,2),stem(Y2,Y3) % 绘制Y2、Y3的火柴杆图 >> subplot(1,3,3),stem(Y3) % 绘制Y3的火柴杆图运行结果如下图所示:

图 2 火柴杆图形