最近在學中頻訊號處理的一些東西,順便用 QT 寫了一個小工具,可以顯示訊號的時域波形圖、幅度譜、功率譜、二次方譜、四次方譜、八次方譜、瞬時包絡、瞬時頻率、瞬時相位、非線性瞬時相位、瞬時幅度直方圖、瞬時頻率直方圖、瞬時相位直方圖、眼圖、星座圖、語譜圖、瀑布圖。
工具為純 C++ 開發,包括頻譜計算以及影象視覺化。這裡簡述下實現思路,使用到了以下第三方庫:
頻譜計算部分,通過呼叫 FFTW 的 C++ 介面,同時開啟 OpenMP 多核支援,可以獲得很快的計算速度,比 MATLAB 還快,工具中的所有頻譜都是在點選按鈕時現算的。在我的電腦上(8 核 Intel i7-6700HQ CPU @ 2.60GHz),實測對 33554432 長度(2 的 25 次方)的雙精度浮點陣列進行傅立葉變換,兩種方式的耗時如下:
fft
函數耗時 629 毫秒。影象視覺化部分,使用 QCustomPlot 完成影象繪製,並結合 FreeGlut 工具開啟 OpenGL 支援,繪圖質量及響應速度也得到了較好的提升,巨量資料顯示並進行互動時不會出現卡頓。為了進一步提升速度,還修改了 QCustomPlot 的部分原始碼,將資料更新介面暴露出來,使用 memcpy()
直接對原始繪圖資料所在的記憶體塊進行操作,提升資料更新的速度。主介面如下:
測試訊號:2FSK 調變,調變速率 8888 Baud/s,取樣率 284416 Hz,訊號頻率 62216 Hz 與 79992Hz,檔案大小 64 MB。波形顯示時做了貝塞爾平滑處理。
測試訊號:2FSK 調變,調變速率 8888 Baud/s,取樣率 284416 Hz,訊號頻率 62216 Hz 與 79992Hz,檔案大小 64 MB。
測試訊號:2FSK 調變,調變速率 8888 Baud/s,取樣率 284416 Hz,訊號頻率 62216 Hz 與 79992Hz,檔案大小 64 MB。
測試訊號:8PSK 調變,調變速率 8888 Baud/s,取樣率 284416 Hz,載波頻率 71104 Hz,檔案大小 64 MB。
測試訊號:8PSK 調變,調變速率 8888 Baud/s,取樣率 284416 Hz,載波頻率 71104 Hz,檔案大小 64 MB。
測試訊號:8PSK 調變,調變速率 8888 Baud/s,取樣率 284416 Hz,載波頻率 71104 Hz,檔案大小 64 MB。
測試訊號:8PSK 調變,調變速率 8888 Baud/s,取樣率 284416 Hz,載波頻率 71104 Hz,檔案大小 64 MB。
測試訊號:2FSK 調變,調變速率 8888 Baud/s,取樣率 284416 Hz,訊號頻率 62216 Hz 與 79992Hz,檔案大小 64 MB。
測試訊號:8PSK 調變,調變速率 8888 Baud/s,取樣率 284416 Hz,載波頻率 71104 Hz,檔案大小 64 MB。
測試訊號:8PSK 調變,調變速率 8888 Baud/s,取樣率 284416 Hz,載波頻率 71104 Hz,檔案大小 64 MB。
測試訊號:8PSK 調變,調變速率 8888 Baud/s,取樣率 284416 Hz,載波頻率 71104 Hz,檔案大小 64 MB。
測試訊號:2FSK 調變,調變速率 8888 Baud/s,取樣率 284416 Hz,訊號頻率 62216 Hz 與 79992Hz,檔案大小 64 MB。
測試訊號:8PSK 調變,調變速率 8888 Baud/s,取樣率 284416 Hz,載波頻率 71104 Hz,檔案大小 64 MB。
測試訊號:8PSK 調變,調變速率 8888 Baud/s,取樣率 284416 Hz,基頻訊號,檔案大小 64 MB。
測試訊號:8PSK 調變,調變速率 8888 Baud/s,取樣率 284416 Hz,載波頻率 71104 Hz,檔案大小 64 MB。
測試訊號:2FSK 調變,調變速率 8888 Baud/s,取樣率 284416 Hz,訊號頻率 62216 Hz 與 79992Hz,檔案大小 64 MB。從計算到顯示總耗時不超過 1 秒。
測試訊號: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) 版權協定。