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

来源:https://www.cnblogs.com/young520/archive/2023/05/28/17438635.html
-Advertisement-
Play Games

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


說明

最近在學中頻信號處理的一些東西,順便用 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() 直接對原始繪圖數據所在的記憶體塊進行操作,提升數據更新的速度。主界面如下:

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”


2. 時域波形圖

測試信號:2FSK 調製,調製速率 8888 Baud/s,採樣率 284416 Hz,信號頻率 62216 Hz 與 79992Hz,文件大小 64 MB。波形顯示時做了貝塞爾平滑處理。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”


3. 幅度譜

測試信號:2FSK 調製,調製速率 8888 Baud/s,採樣率 284416 Hz,信號頻率 62216 Hz 與 79992Hz,文件大小 64 MB。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”


4. 功率譜

測試信號:2FSK 調製,調製速率 8888 Baud/s,採樣率 284416 Hz,信號頻率 62216 Hz 與 79992Hz,文件大小 64 MB。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”


5. 二次方譜

測試信號:8PSK 調製,調製速率 8888 Baud/s,採樣率 284416 Hz,載波頻率 71104 Hz,文件大小 64 MB。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”


6. 四次方譜

測試信號:8PSK 調製,調製速率 8888 Baud/s,採樣率 284416 Hz,載波頻率 71104 Hz,文件大小 64 MB。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”


7. 八次方譜

測試信號:8PSK 調製,調製速率 8888 Baud/s,採樣率 284416 Hz,載波頻率 71104 Hz,文件大小 64 MB。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”


8. 瞬時包絡

測試信號:8PSK 調製,調製速率 8888 Baud/s,採樣率 284416 Hz,載波頻率 71104 Hz,文件大小 64 MB。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”


9. 瞬時頻率

測試信號:2FSK 調製,調製速率 8888 Baud/s,採樣率 284416 Hz,信號頻率 62216 Hz 與 79992Hz,文件大小 64 MB。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”


10. 瞬時相位

測試信號:8PSK 調製,調製速率 8888 Baud/s,採樣率 284416 Hz,載波頻率 71104 Hz,文件大小 64 MB。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”


11. 非線性瞬時相位

測試信號:8PSK 調製,調製速率 8888 Baud/s,採樣率 284416 Hz,載波頻率 71104 Hz,文件大小 64 MB。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”


12. 瞬時幅度直方圖

測試信號:8PSK 調製,調製速率 8888 Baud/s,採樣率 284416 Hz,載波頻率 71104 Hz,文件大小 64 MB。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”


13. 瞬時頻率直方圖

測試信號:2FSK 調製,調製速率 8888 Baud/s,採樣率 284416 Hz,信號頻率 62216 Hz 與 79992Hz,文件大小 64 MB。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”


14. 瞬時相位直方圖

測試信號:8PSK 調製,調製速率 8888 Baud/s,採樣率 284416 Hz,載波頻率 71104 Hz,文件大小 64 MB。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”


15. 眼圖

測試信號:8PSK 調製,調製速率 8888 Baud/s,採樣率 284416 Hz,基帶信號,文件大小 64 MB。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”


16. 星座圖

測試信號:8PSK 調製,調製速率 8888 Baud/s,採樣率 284416 Hz,載波頻率 71104 Hz,文件大小 64 MB。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”


17. 語譜圖

測試信號:2FSK 調製,調製速率 8888 Baud/s,採樣率 284416 Hz,信號頻率 62216 Hz 與 79992Hz,文件大小 64 MB。從計算到顯示總耗時不超過 1 秒。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”


18. 瀑布圖

測試信號:2FSK 調製,調製速率 8888 Baud/s,採樣率 284416 Hz,信號頻率 62216 Hz 與 79992Hz,文件大小 64 MB。譜線為實時計算。由於 GIF 上傳大小限製為 5 MB,錄製為 GIF 時做了質量損失。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”

本文作者:木三百川

本文鏈接:https://www.cnblogs.com/young520/p/17438635.html

版權聲明:本文系博主原創文章,著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請附上出處鏈接。遵循 署名-非商業性使用-相同方式共用 4.0 國際版 (CC BY-NC-SA 4.0) 版權協議。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • WMS產品實時數據倉庫介紹 目標以ERP、跨境電商ERP 、 WMS(倉儲管理系統)為核心,搭建融合商業智能BI、新零售、訂貨系統等為一體的產品矩陣,幫助電商企業快速佈局 跨境 和 新零售,提升訂單處理效率,實現數字化業務管理,為企業降本增效。痛點業務+數據雙中台 Hologres是阿裡巴巴自主研發 ...
  • 設計一個支持百萬用戶的系統是具有挑戰性的,這是一段需要不斷改進和不斷提升的旅程。在本章中,我們將構建一個支持單個用戶的系統,並逐漸擴展以服務於數百萬用戶。閱讀本章後,您將掌握一些技巧,幫助您解決系統設計面試問題。 > AI不會取代你,使用AI的人會。歡迎關註我的公眾號:更AI。以程式員的視角來看AI ...
  • ### 命令模式(Command Pattern) #### 一、定義 命令模式(Command Pattern)是一種數據驅動的設計模式,它屬於行為型模式。請求以命令的形式包裹在對象中,並傳給調用對象。調用對象尋找可以處理該命令的合適的對象,並把該命令傳給相應的對象,該對象執行命令。 將一個請求封 ...
  • ## 網路分層結構 電腦網路體系大致分為三種,OSI七層模型、TCP/IP四層模型和五層模型。一般面試的時候考察比較多的是五層模型。最全面的Java面試網站:[最全面的Java面試網站](https://topjavaer.cn) ![](http://img.topjavaer.cn/img/t ...
  • Java的Object類是所有類的根類,它提供了一些通用的方法。下麵是一些常用的Object類方法: 1. equals(Object obj):判斷當前對象是否與給定對象相等。預設情況下,equals方法比較的是對象的引用,但可以通過在具體類中重寫equals方法來改變其比較行為。 2. hash ...
  • ini 配置文件格式如下 要求:ini 文件必須是GBK編碼,如果是UTF-8編碼,python讀取配置文件會報錯。 # 這裡是註釋內容 # [FY12361] #婦幼保健介面服務埠 serverIP=192.168.1.11 serverPort=8400 [SM] #國產SM加密服務埠 se ...
  • # Rust Web 全棧開發之 Actix 嘗鮮並構建REST API ## 一、Actix 嘗鮮 ### 需要使用的crate - actix-web v4.3.1 - actix-rt v2.8.0 ```bash ~ via 🅒 base ➜ cd rust ~/rust via 🅒 b ...
  • ## 前言 TCP源碼篇,當前只分析TCP層的源碼實現,按功能分塊分析,介面為RAW介面。 NETCONN介面和SOCKET介面會獨立一篇文章進行分析。 本文基於讀者已學習了TCP協議原理篇的基礎上進行源碼分析,不再在此篇文章中過多解析TCP相關概念。 ‍ 建議讀者對著LWIP庫源碼進行閱讀。對於初 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...