阐明
最近在学中频信号处理的一些货色,顺便用 QT 写了一个小工具,能够显示信号的时域波形图、幅度谱、功率谱、二次方谱、四次方谱、八次方谱、刹时包络、刹时频率、刹时相位、非线性刹时相位、刹时幅度直方图、刹时频率直方图、刹时相位直方图、眼图、星座图、语谱图、瀑布图。
1. 实现思路
工具为纯 C++ 开发,包含频谱计算以及图像可视化。这里简述下实现思路,应用到了以下第三方库:
- QCustomPlot 绘图库。
- FFTW 傅氏变换库。
- FreeGlut 工具包。
频谱计算局部,通过调用 FFTW 的 C++ 接口,同时开启 OpenMP 多核反对,能够取得很快的计算速度,比 MATLAB 还快,工具中的 所有频谱都是在点击按钮时现算的。在我的电脑上(8 核 Intel i7-6700HQ CPU @ 2.60GHz),实测对 33554432 长度(2 的 25 次方)的双精度浮点数组进行傅里叶变换,两种形式的耗时如下:
- MATLAB 的
fft
函数耗时 629 毫秒。 - C++ 调用 FFTW 接口并开启 OpenMP 多核反对,耗时 390 毫秒。
图像可视化局部,应用 QCustomPlot 实现图像绘制,并联合 FreeGlut 工具开启 OpenGL 反对,绘图品质及响应速度也失去了较好的晋升,大数据显示并进行交互时不会呈现卡顿。为了进一步晋升速度,还批改了 QCustomPlot 的局部源码,将数据更新接口裸露进去,应用 memcpy()
间接对原始绘图数据所在的内存块进行操作,晋升数据更新的速度。主界面如下:
2. 时域波形图
测试信号:2FSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,信号频率 62216 Hz 与 79992Hz,文件大小 64 MB。波形显示时做了贝塞尔平滑解决。
3. 幅度谱
测试信号:2FSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,信号频率 62216 Hz 与 79992Hz,文件大小 64 MB。
4. 功率谱
测试信号:2FSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,信号频率 62216 Hz 与 79992Hz,文件大小 64 MB。
5. 二次方谱
测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,载波频率 71104 Hz,文件大小 64 MB。
6. 四次方谱
测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,载波频率 71104 Hz,文件大小 64 MB。
7. 八次方谱
测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,载波频率 71104 Hz,文件大小 64 MB。
8. 刹时包络
测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,载波频率 71104 Hz,文件大小 64 MB。
9. 刹时频率
测试信号:2FSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,信号频率 62216 Hz 与 79992Hz,文件大小 64 MB。
10. 刹时相位
测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,载波频率 71104 Hz,文件大小 64 MB。
11. 非线性刹时相位
测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,载波频率 71104 Hz,文件大小 64 MB。
12. 刹时幅度直方图
测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,载波频率 71104 Hz,文件大小 64 MB。
13. 刹时频率直方图
测试信号:2FSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,信号频率 62216 Hz 与 79992Hz,文件大小 64 MB。
14. 刹时相位直方图
测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,载波频率 71104 Hz,文件大小 64 MB。
15. 眼图
测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,基带信号,文件大小 64 MB。
16. 星座图
测试信号:8PSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,载波频率 71104 Hz,文件大小 64 MB。
17. 语谱图
测试信号:2FSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,信号频率 62216 Hz 与 79992Hz,文件大小 64 MB。从计算到显示总耗时不超过 1 秒。
18. 瀑布图
测试信号:2FSK 调制,调制速率 8888 Baud/s,采样率 284416 Hz,信号频率 62216 Hz 与 79992Hz,文件大小 64 MB。谱线为实时计算。因为 GIF 上传大小限度为 5 MB,录制为 GIF 时做了品质损失。