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
  • C#TMS系統代碼-基礎頁面BaseCity學習 本人純新手,剛進公司跟領導報道,我說我是java全棧,他問我會不會C#,我說大學學過,他說這個TMS系統就給你來管了。外包已經把代碼給我了,這幾天先把增刪改查的代碼背一下,說不定後面就要趕鴨子上架了 Service頁面 //using => impo ...
  • 委托與事件 委托 委托的定義 委托是C#中的一種類型,用於存儲對方法的引用。它允許將方法作為參數傳遞給其他方法,實現回調、事件處理和動態調用等功能。通俗來講,就是委托包含方法的記憶體地址,方法匹配與委托相同的簽名,因此通過使用正確的參數類型來調用方法。 委托的特性 引用方法:委托允許存儲對方法的引用, ...
  • 前言 這幾天閑來沒事看看ABP vNext的文檔和源碼,關於關於依賴註入(屬性註入)這塊兒產生了興趣。 我們都知道。Volo.ABP 依賴註入容器使用了第三方組件Autofac實現的。有三種註入方式,構造函數註入和方法註入和屬性註入。 ABP的屬性註入原則參考如下: 這時候我就開始疑惑了,因為我知道 ...
  • C#TMS系統代碼-業務頁面ShippingNotice學習 學一個業務頁面,ok,領導開完會就被裁掉了,很突然啊,他收拾東西的時候我還以為他要旅游提前請假了,還在尋思為什麼回家連自己買的幾箱飲料都要叫跑腿帶走,怕被偷嗎?還好我在他開會之前拿了兩瓶芬達 感覺感覺前面的BaseCity差不太多,這邊的 ...
  • 概述:在C#中,通過`Expression`類、`AndAlso`和`OrElse`方法可組合兩個`Expression<Func<T, bool>>`,實現多條件動態查詢。通過創建表達式樹,可輕鬆構建複雜的查詢條件。 在C#中,可以使用AndAlso和OrElse方法組合兩個Expression< ...
  • 閑來無聊在我的Biwen.QuickApi中實現一下極簡的事件匯流排,其實代碼還是蠻簡單的,對於初學者可能有些幫助 就貼出來,有什麼不足的地方也歡迎板磚交流~ 首先定義一個事件約定的空介面 public interface IEvent{} 然後定義事件訂閱者介面 public interface I ...
  • 1. 案例 成某三甲醫預約系統, 該項目在2024年初進行上線測試,在正常運行了兩天後,業務系統報錯:The connection pool has been exhausted, either raise MaxPoolSize (currently 800) or Timeout (curren ...
  • 背景 我們有些工具在 Web 版中已經有了很好的實踐,而在 WPF 中重新開發也是一種費時費力的操作,那麼直接集成則是最省事省力的方法了。 思路解釋 為什麼要使用 WPF?莫問為什麼,老 C# 開發的堅持,另外因為 Windows 上已經裝了 Webview2/edge 整體打包比 electron ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...