最近在學中頻信號處理的一些東西,順便用 QT 寫了一個小工具,可以顯示信號的時域波形圖、幅度譜、功率譜、二次方譜、四次方譜、八次方譜、瞬時包絡、瞬時頻率、瞬時相位、非線性瞬時相位、瞬時幅度直方圖、瞬時頻率直方圖、瞬時相位直方圖、眼圖、星座圖、語譜圖、瀑布圖。 ...
說明
最近在學中頻信號處理的一些東西,順便用 QT 寫了一個小工具,可以顯示信號的時域波形圖、幅度譜、功率譜、二次方譜、四次方譜、八次方譜、瞬時包絡、瞬時頻率、瞬時相位、非線性瞬時相位、瞬時幅度直方圖、瞬時頻率直方圖、瞬時相位直方圖、眼圖、星座圖、語譜圖、瀑布圖。
目錄- 說明
- 1. 實現思路
- 2. 時域波形圖
- 3. 幅度譜
- 4. 功率譜
- 5. 二次方譜
- 6. 四次方譜
- 7. 八次方譜
- 8. 瞬時包絡
- 9. 瞬時頻率
- 10. 瞬時相位
- 11. 非線性瞬時相位
- 12. 瞬時幅度直方圖
- 13. 瞬時頻率直方圖
- 14. 瞬時相位直方圖
- 15. 眼圖
- 16. 星座圖
- 17. 語譜圖
- 18. 瀑布圖
1. 實現思路
工具為純 C++ 開發,包括頻譜計算以及圖像可視化。這裡簡述下實現思路,使用到了以下第三方庫:
頻譜計算部分,通過調用 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 時做了質量損失。
本文作者:木三百川
本文鏈接:https://www.cnblogs.com/young520/p/17438635.html
版權聲明:本文系博主原創文章,著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請附上出處鏈接。遵循 署名-非商業性使用-相同方式共用 4.0 國際版 (CC BY-NC-SA 4.0) 版權協議。