一、绘制向量图
任务1
可以使用 plot
函数在一张图上绘制两个相同长度的向量。
plot(x,y)
任务
创建一个绘图,其中 sample
位于 x 轴,mass1
位于 y 轴。
plot(sample,mass1)
任务2
plot
函数接受一个附加参数。使用该参数,您可以通过在引号中包含不同符号的方式来指定与之对应的颜色、线型和标记样式。
plot(x,y,"r--o")
以上命令将会绘制一条红色 (r
) 虚线 (--
),并使用圆圈 (o
) 作为标记。您可以在线条设定的文档中了解有关可用符号的详细信息
任务
绘制 mass2
(y 轴)对 sample
(x 轴)的图。在绘图中使用红色 (r
) 星号 (*
) 标记,并且不使用线条。
plot(sample,mass2,"r*")
任务3
请注意,每个绘图命令都创建了一个单独的绘图。要在一张图上先后绘制两条线,请使用 hold on
命令保留之前的绘图,然后添加另一条线。
任务
输入 hold on
命令
然后绘制 mass1
(y 轴)对 sample
(x 轴)的图,并带有黑色 (k
) 方形 (s
) 标记,不带线条。
hold on
plot(sample,mass1,"ks")
任务4
启用保留状态时,将继续在同一坐标区上绘图。要恢复默认绘图行为,即其中每个绘图都有自己的坐标区,请输入 hold off
任务5
当您单独绘制一个向量时,MATLAB 会使用向量值作为 y 轴数据,并将 x 轴数据的范围设置为从 1
到 n
(向量中的元素数目)。
任务
使用以下命令绘制向量 v1
。
plot(v1)
任务6
plot
函数接受可选的附加输入,这些输入由一个属性名称和一个关联的值组成。
plot(y,"LineWidth",5)
以上命令将绘制一条粗线。您可以在线条属性文档中了解更多可用属性的详细信息。
任务
绘制 v1
,线宽为 3
。
plot(v1,"LineWidth",3)
任务7
使用 plot
函数时,您可在绘图参数和线条设定符之后添加属性名称-属性值对组。
plot(x,y,"ro-","LineWidth",5)
任务
绘制 v1
(y 轴)对 sample
(x 轴)的图,使用红色 (r
) 圆圈 (o
) 标记,线宽为 4
。
plot(sample,v1,"ro","LineWidth",4)
附加练习
plot
函数用来绘制线条。MATLAB 中还有许多其他绘图函数。您可以在 MATLAB 图库中看到一个详尽的列表。
每个绘图都有其不同的自定义选项。试着用 histogram
函数创建一个 density
的直方图。将 "FaceColor"
设置为黄色 ("y"
)
二、编写绘图注释
任务一
可以使用绘图注释函数(例如 title
)在绘图中添加标签。此类函数的输入是一个字符串。MATLAB 中的字符串是用双引号 ("
) 引起来的。
title("Plot Title")
任务
为现有绘图添加标题 "Sample Mass"
。
title("Sample Mass")
任务二
使用 ylabel
函数添加标签 "Mass (g)"
。
ylabel("Mass(g)")
任务三
您可以使用 legend
函数为绘图添加图例。
legend("a","b","c")
任务
创建一个图例,其中依次包含标签 "Exp A"
和 "Exp B"
。
legend("Exp A","Exp B")
三 复习
任务一
用电量数据存储在一个名为 electricity.mat
的文件中。将 MAT 文件加载到 MATLAB 中。
然后在脚本中输入 usage
以查看矩阵。
load electricity
usage
任务二
在 MATLAB 中,NaN
(即“非数值”)用于表示缺失数据。
任务
usage
变量中有一个元素的值为 NaN
。将该值替换为 2.74
usage(2,3)=2.74
任务三
居民数据存储在第一列中。创建一个变量 res
,其中包含 usage
的第一列数据。
res=usage(:,1)
任务四
商业数据和工业数据分别存储在第二列和第三列。创建变量 comm
和 ind
,分别包含 usage
第二列和第三列的数据
comm=usage(:,2)
ind=usage(:,3)
任务五
本示例使用的是从 1991 年到 2013 年收集的年用电量数据。通过创建的 yrs
变量可以在一个有意义的范围内绘制数据图
任务
创建一个名为 yrs
的向量,表示从 1991 年开始到 2013 年结束的年份。
yrs=(1991:2013)
任务六
创建一个包含所有三列数据的绘图。使用 yrs
作为 x 数据。按下面的顺序和绘图设定绘制数据:
res
:蓝色 (b
) 虚线 (--
)comm
:黑色 (k
) 点线 (:
)ind
:洋红色 (m
) 点划线 (-.
)
plot(yrs,res,"b--")
hold on
plot(yrs,comm,"k:")
plot(yrs,ind,"m-.")
hold off
任务七
将标题 "July Electricity Usage"
添加到现有绘图。
用值 "res"
、"comm"
和 "ind"
创建图例。
title("July Electricity Usage")
legend("res","comm","ind")
任务二
任务一
背景:C 和弦录音存储在一个名为 Cchord.mat
的文件中。此文件包含两个变量:
y
:录音信号fs
:采样频率
此任务使用 numel
函数返回数组中的元素数目。
加载文件 Cchord.mat
。
创建一个名为 n
的变量,表示 y
中的元素数目。然后使用 n
创建等间距向量 t
,该向量以 0
开头,以 n-1
结尾,元素之间的间距为 1
。
load Cchord
n=numel(y)
t=(0:1:n-1)
任务二
t
现在有正确的点数,但它需要表示音频信号的采样时间。您可以使用采样频率 fs
将向量转换为时间(以秒为单位)。
t=t/fs
plot(t,y)
任务三
在绘图中,请注意 y
是周期性的,但它不是简单的正弦波。它由具有不同频率的多个正弦波组成。
傅里叶变换将返回信号的频谱信息。主频的位置将显示和弦中包含的音符。
您可以使用 fft
函数来计算向量的离散傅里叶变换。
fft(y)
fft
的输出值为复数。您可以使用 abs
函数来获得幅值。
yfft=abs(fft(y))
任务四
在任务 1 和 2 中,您已计算了信号 y
的时间向量 t
。同样,您需要为您的 FFT 向量 yfft
计算频率向量 f
。
创建等间距向量 f
,该向量以 0
开头,以 n-1
结尾,元素之间的间距为 1
。
f=(0:1:n-1)
任务五
向量 f
现在包含 n
个点。要将这些点转换为频率,您可以将整个向量乘以采样频率 (fs
),然后除以点数 (n
)。f
将包含从 0
到 fs
的频率。主频位于 f
的开头位置。您可以使用 xlim
函数放大所关注的区域。
xlim([xmin xmax])
任务
将 f
乘以 fs/n
。将输出赋给同一个变量 f
。
使用 x 的限值 0
和 1000
绘制 yfft
对 f
的图。
f=fs/n
plot(f,yfft)
xlim([0 1000])