本实验介绍MATLAB通信工具箱(Communications Tools)的基本使用。读者可以通过"help"命令查询有关函数的功能。通过本实验,可以熟悉基本的画图和打印命令,理解脚本编写和调用的原理。
第一部分:信号的产生
1. 建立时间向量
因为信号是时间的函数,生成信号之前需要先建立一个时间序列。下面定义一个持续时间为$$1$$秒,步长为1/1000秒的时间向量。 本实验指导书将用变量名“delta_t”($\Delta t$)来表示时间向量的步长。此时间向量包含1001个值,从0开始到1结束。
t1 = 0:0.001:1; %时间向量
2. 产生信号
用如下命令可产生频率为10Hz的周期单音信号 s1,
s1 = cos(2*pi*10*t1); %单音信号
多音信号可以用多个正弦信号求和得到,如信号s2包含20,35和50Hz三个信号:
s2 = 10*cos(2*pi*20*t1)+4*cos(2*pi*35*t1)+6*cos(2*pi*50*t1); %多音信号
以后的实验中,读者将会使用信号的最大的幅度来计算其时域功率。 上面定义的信号s2中的最大幅度为20(将三个余弦信号的最大幅度加起来可得)。如果不容易从公式或者信号图中确定最大幅度,可以用MATLAB中的“max”命令找到信号的近似最大幅度。
max_of_s = max(s); %信号s的最大幅度。
命令“plot”,“title”,“xlabel”和“ylabel”可用于产生有明确标签的信号图形。
plot(t1,s1)
title('信号')
xlabel('时间')
ylabel('幅度')
运行脚本“lab1.m”
图1:观察单音信号 s1 的时域图形。
图2:观察多音信号s2的时域图形。
3.信号绘图
信号s1和s2频率较低,下面将定义的时间向量和信号t2, s3, s4更具有代表性。
$$
s_3 = 5\sin(2\pi \times200t)
$$
$$
s_4=10\cos(2\pi\times130t)+5\cos(2\pi\times 335t)+\cos(2\pi\times 400t)
$$
产生上述信号的MATLAB代码为:
t2 = 0:0.0001:1 %time vector of 10,001 points
s3 = 5*sin(2*pi*200*t2); %single-tone signal
s4 = 10*cos(2*pi*130*t2)+5*cos(2*pi*335*t2)+cos(2*pi*400*t2); %multi-tone signal
如果绘制整个较高频率信号向量的图形,则信号特征不易观察。可以采用如下两种方法将图形大小限制在1000个点以内。
- 限制绘图的点数。这种方法尤其适用于两个信号向量长度不一致的情形。
plot(t2(1:1000), s3(1:1000))
- 使用“axis”命令锁定最小最大值范围内的值,如时间、幅度等。请注意,锁定后记得再用一次“axis”命令解除锁定。
为了比较信号的差异,通常需要将一个信号叠加在另一个信号之上。有三个办法可以处理这种情况:
- 在“plot”命令中使用多对x,y参数。比如:
plot(t2(1:500, s3(1:500), t2(1:500), s4(1:500)) %plot s4 over s3
- 使用“hold on”和“hold off”命令,有时还会结合“pause”命令。
plot(t2, s4); %plot signal with larger amplitude first
hold on;
pause(3); %wait 3 seconds
plot(t2, s3, 'g'); %plot in green
hold off;
- 生成一个信号矩阵来画随时间变化的多个信号:
plot(t2(1:1000), [s3(1:1000); s4(1:1000)])