MATLAB入门之旅-绘制数据图

一、绘制向量图

任务1

可以使用 plot 函数在一张图上绘制两个相同长度的向量。

plot(x,y)

任务

创建一个绘图,其中 sample 位于 x 轴,mass1 位于 y 轴。

plot(sample,mass1)

任务2

plot 函数接受一个附加参数。使用该参数,您可以通过在引号中包含不同符号的方式来指定与之对应的颜色、线型和标记样式。

plot(x,y,"r--o")

以上命令将会绘制一条红色 (r) 虚线 (--),并使用圆圈 (o) 作为标记。您可以在线条设定的文档中了解有关可用符号的详细信息

任务

绘制 mass2y 轴)对 samplex 轴)的图。在绘图中使用红色 (r) 星号 (*) 标记,并且不使用线条。

plot(sample,mass2,"r*")

任务3

请注意,每个绘图命令都创建了一个单独的绘图。要在一张图上先后绘制两条线,请使用 hold on 命令保留之前的绘图,然后添加另一条线。

任务

输入 hold on 命令
然后绘制 mass1y 轴)对 samplex 轴)的图,并带有黑色 (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)

任务

绘制 v1y 轴)对 samplex 轴)的图,使用红色 (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 数据。按下面的顺序和绘图设定绘制数据:

  1. res:蓝色 (b) 虚线 (--)
  2. comm:黑色 (k) 点线 (:)
  3. 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])

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值