QT 繪製波形圖、頻譜圖、瀑布圖、星座圖、眼圖、語圖

2023-05-28 21:00:49

說明

最近在學中頻訊號處理的一些東西,順便用 QT 寫了一個小工具,可以顯示訊號的時域波形圖、幅度譜、功率譜、二次方譜、四次方譜、八次方譜、瞬時包絡、瞬時頻率、瞬時相位、非線性瞬時相位、瞬時幅度直方圖、瞬時頻率直方圖、瞬時相位直方圖、眼圖、星座圖、語譜圖、瀑布圖。


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 時做了質量損失。