Gnuradio之复解析信号特征

实验目的

学习 GNU Radio 流程图编程。 了解复解析信号的接收处理流程, 找到自己需要的模块, 修改模块的参数, 并能根据实验结果分析理论原因。

实验步骤

1.在 GRC 中打开一个新流程图。

2.按图所示建立一个简单的流程图, 和之前的实验那样给三个 block 的数据类型设定为 float,同时把所有的其它值设定为默认值。

3.执行流程图,打开显示窗口显示一个正弦波,然后测量该信号的幅度和频率是不是之前所设定的。

4.把上述三个框图的类型改为复值,再执行上述流程,显示窗口应该会显示2 个相位互相差 90 度的正弦波。前面的那个波形(来自 Channel 1)为 I(实部)或者称为同相分量,后面的那个波形称之为 Q(虚部)或者正交分量。如果把一个信号源设为复信号,它会同时输出 I 和 Q 分量。

5.修改流程图如图 2 所示,信号源输出设为数据类型为 float 的方波。那么第一个显示窗口和 Throttle 模块都必须设定允许 Float 数据输入。

6.图中的希尔伯特模块可以从滤波器菜单中找到。该模块既可以输出复输入信号的实部,也可以输出其希尔伯特变换的结果。设其默认标签数为 64 个。由于该模块的输出是复值,第二个显示窗口也必须设为可以接收复输入。

7.执行该流程图,打开那两个显示窗口,其一应当为信号源输出的方波,另外一个应该同时包含原方波信号及其希尔伯特变换。能解释为什么方波信号的希尔伯特变换波形是这个样子吗?

因为希尔伯特变换是将信号与 $\frac{1}{\pi t}$ 进行卷积得到,所以是这样子的。

8.如前第四步所说,信号源可以输出一个复信号,然后在显示窗口显示其实部 I 和虚部 Q。现在把流程图修改为图 3 的设定

9.设定信号源输出复波形,然后确保 Throttle 与显示窗口的数据类型都是复数。执行该流程图,发现这里显示的与希尔伯特变换的结果一样吗?

不一样

10.新建一个如图流程图,要确保所有模块的类型要设定为 float。该流程图使用 2个余弦信号,频率分别为1KHz和10KHz。让这两个信号相乘,由三角公式我们知道两个余弦信号的积,其结果为频率分别是原信号频率的和与原信号频率的差的合成信号。从频谱图看,应该会得到 9KHz 和 11KHz 的信号输出。

11.执行流程图,然后确认其结果是否与分析的一致。应该注意到 FFT plot模块仅能显示数据类型为 float 的正频谱。我们知道实输入信号的负频谱分量与正频谱分量其实是一样的。

12.把所有模块的数据类型全改为复数,再次执行流程图。你会观察到一个11KHz 频率的信号,这是原信号平移了 1KHz 的结果。

如果你想向相反的方向平移,该怎么做?

若要向反方向平移,将1kHz的信号频率改成-1kHz,可以通过三角函数设置初始相位使频率为负值

从这个例子中看到两个使用解析信号的优势。一个信号可以在创建一个不同信号的基础上就可以实现频谱平移。

为什么这里没有负频率分量?

因为现实中频率不能为复数

complex.grc