028-87409729
: 9:00-18:00
17348136089
: 7*24h
自然界中的物理過程、傳感器和傳感器網(wǎng)絡、電路和電子設備、通信系統(tǒng)等都是模擬信號的來源。通過可視化模擬信號,可以幫助研究人員直觀地觀察信號的形態(tài)、幅度、頻率、相位等特征。
可視化使得信號的特征更加清晰明了,有助于研究人員理解信號的行為和性質(zhì)。但是可以用于可視化繪制圖表的開源庫較多,通過比較常用開源庫選擇最適合項目需求的庫,以實現(xiàn)高質(zhì)量的數(shù)據(jù)可視化。
n 優(yōu)點:
? 靈活性高,可以通過自定義圖層和元素來實現(xiàn)高度定制的圖表。
? 功能豐富,提供了各種類型的圖表,如折線圖、散點圖、柱狀圖等。
? 可以與 Qt 框架無縫集成,使用方便。
? 支持交互性,例如放大縮小、拖動等操作。
n 缺點:
? 繪制大量數(shù)據(jù)時,性能可能較差。
n 優(yōu)點:
? QChart是 Qt 框架自帶的圖表庫,與 Qt 其他組件無縫集成,使用方便。
? 官方文檔和示例豐富,學習曲線較平緩。
? 提供了豐富的圖表類型和樣式,支持動畫效果。
n 缺點:
? 功能相對較少,不如其他庫靈活。
? 定制性相對較弱,難以實現(xiàn)一些高級需求。
n 優(yōu)點:
? 提供了豐富的圖表類型和樣式,功能較為全面。
? 具有較好的繪圖性能,適用于繪制大量數(shù)據(jù)。
? 支持多種交互功能,如放大縮小、鼠標追蹤等。
n 缺點:
? 與 Qt 框架集成較為復雜,需要額外的安裝和配置。
? 缺乏官方文檔和示例,學習曲線較陡峭。
小結(jié):QCustomPlot因具備輕量級、易用性、高性能、豐富的功能和強大的社區(qū)支持等優(yōu)點,成為了信號采集領域中被廣泛使用的可視化庫。
QCustomPlot是一個用于Qt應用程序中繪制高質(zhì)量圖表和圖形的開源C++庫,其提供了一個易于使用的API,允許開發(fā)人員創(chuàng)建各種類型的圖表,如線圖、散點圖、柱狀圖、餅圖等。
圖 1 支持繪制的圖形
? 靈活性:QCustomPlot允許開發(fā)者對圖表進行高度自定義。實現(xiàn)對軸標簽、刻度、范圍以及圖表的樣式、顏色和外觀等元素的靈活控制。
? 交互性:開發(fā)者可以通過縮放、平移、選擇和編輯圖表中的元素來與圖表進行交互。從而更自由地瀏覽和分析數(shù)據(jù)。
? 高質(zhì)量繪圖:QCustomPlot提供了高質(zhì)量的繪圖功能,支持抗鋸齒渲染,可以生成清晰、平滑的圖表。
? 多種圖表類型:QCustomPlot支持多種常見的圖表類型,如線圖、散點圖、柱狀圖、餅圖等。開發(fā)人員可以選擇適合自己應用需求的圖表類型。
? 輕量級:QCustomPlot是一個輕量級的庫,不依賴于其他第三方庫,易于集成到Qt應用程序中。
通過使用QCustomPlot,開發(fā)人員可以快速、簡便地在Qt應用程序中添加交互式和可定制的圖表功能,以滿足數(shù)據(jù)可視化和分析的需求。
圖 2 圖表組成
圖 3 繪制元素類
① 類結(jié)構(gòu):QCustomPlot 的核心類是 QCPLayerable,是繪制圖表的主要控件。QCPLayerable包含了許多子類,如 QCPGraph、QCPBars、QCPAxis 等,分別用于繪制不同類型的圖表元素。
② 繪圖邏輯:QCustomPlot 使用 QPainter 進行繪圖操作。可以通過重寫 QCustomPlot 的paintEvent 函數(shù),在繪圖時根據(jù)各個圖表元素的屬性和數(shù)據(jù)進行繪制。
③ 坐標軸和標簽:QCustomPlot 提供了靈活的坐標軸和標簽定制選項。使用 QCPAxis 類來表示坐標軸,并提供了一系列函數(shù)來設置坐標軸的范圍、刻度、標簽等屬性。
④ 圖表元素:QCustomPlot 支持多種圖表元素,如線圖、柱狀圖、散點圖等。每種圖表元素都有對應的類,如 QCPGraph、QCPBars、QCPScatter 等。這些類提供了設置圖表元素樣式、數(shù)據(jù)和屬性的函數(shù)。
⑤ 交互性:QCustomPlot 支持交互式操作,如縮放、平移、選取等。可以通過重寫 QCustomPlot 的事件處理函數(shù),捕獲鼠標和鍵盤事件,并根據(jù)用戶的操作進行相應的處理。
⑥ 圖表更新和重繪:QCustomPlot 提供了函數(shù)來更新和重繪圖表。當數(shù)據(jù)發(fā)生變化時,可以調(diào)用相應的函數(shù)來更新圖表的顯示。QCustomPlot 會根據(jù)新的數(shù)據(jù)進行重繪,并更新圖表的外觀。
①功能概述:
? QCPLayerable 類是 QCustomPlot 圖表庫中的一個基類,用于表示可以添加到圖表的可圖層對象。
? 可圖層對象可以是圖形元素、文本標簽、圖例、色標等,可以在圖表上進行繪制和操作。
② 常用函數(shù):
? setLayer(QCPLayer *layer):設置圖層對象所屬的圖層。圖層決定了繪制的順序和層次關系。
? layer():獲取圖層對象所屬的圖層。
? setVisible(bool visible):設置圖層對象的可見性。
? visible():獲取圖層對象的可見性。
? setSelectable(bool selectable):設置圖層對象是否可選中。
QCPGraph 類是 QCustomPlot 圖表庫中的一個重要類,用于繪制和管理圖表中的折線圖。
n 功能概述:
? QCPGraph 類是 QCustomPlot 的子類,用于繪制折線圖。
? 能夠顯示一系列 x-y 坐標對應的數(shù)據(jù)點,并通過直線或曲線將這些點連接起來。
? QCPGraph 可以定制化的樣式,包括線條顏色、線型、數(shù)據(jù)點形狀、數(shù)據(jù)點顏色等。
使用采集卡將相關模擬信號轉(zhuǎn)換為計算機可以處理的數(shù)字信號,通過PCIE、網(wǎng)口等將信號給計算機,從而進行精確和靈活的信號處理和分析。使用采集卡以80MHz的采樣率連續(xù)地采集兩個通道的信號,并通過輸出頻率為25MHz的方式將數(shù)字信號輸出。每個采樣點的幅度將使用12位的位深度進行量化,通過QCustomplot將實際信號進行顯示,然后對此段信號進行分析。
圖 4- 應用實例
①時域分析
時域分析是對信號在時間域上進行分析的方法,主要關注信號的時間變化和波形特征。通過觀察信號的振幅隨時間的變化情況,揭示信號在時間軸上的特性和行為。
如下圖所示,使用QCustomplot繪制出時域信號圖,通過觀察波形的峰值和谷值,可以了解信號的振幅大小。如果信號是周期性的,時域圖中會顯示出重復的波形。通過觀察波形的重復模式,可以觀察出信號的周期和振幅。
圖 5 采集信號的周期和振幅
時間變化:時域圖顯示了信號的振幅隨時間的變化情況。通過觀察波形的形狀和變化趨勢,可以了解信號到信號在不同時間段周期變化。
圖 6 采集信號的時間變化
②頻譜分析
功率譜是頻譜分析的一種形式,它表示信號在不同頻率上的功率或能量分布。功率譜提供了信號在頻率域上的能量或功率信息,可以用來分析信號的頻率特性和頻率成分的強度。
功率譜圖顯示了信號在不同頻率上的功率分布情況。通過觀察功率譜圖中的能量密度或功率密度,可以知道此段信號在5MHz、10MHz、25MHz、30MHz中均有分布。功率譜圖中的高功率區(qū)域表示信號中的主要頻率成分。通過觀察功率譜圖中的峰值或高功率區(qū)域,可以確定此段信號中的主要頻率為25MHz。
圖 7 采集信號的功率譜
時頻分析是將信號同時在時域和頻域上進行分析的方法,用于研究信號在時間和頻率上的變化特性。它可以提供關于信號的時間變化和頻率成分的信息,并揭示信號在時間和頻率上的相互關系。
由時頻圖可以看出此段信號隨著時間的變化,頻率都是穩(wěn)定不變的,根據(jù)顏色的強度可知此信號的主要頻率為25MHz。
圖 8 采集信號的時頻
可以顯示某一點的數(shù)據(jù)坐標,可以用于對采集到的數(shù)據(jù)進行篩選和處理。通過使用QCustomPlot提供的交互式功能,可以選擇和操作繪圖區(qū)域中的數(shù)據(jù)點,從而實現(xiàn)數(shù)據(jù)的篩選和處理。
圖 9 數(shù)據(jù)篩選
總結(jié):
QCustomPlot是信號采集與分析的優(yōu)秀伙伴。其提供了豐富的配置選項,可以定制化圖表的外觀和行為,滿足不同需求。它還支持多種類型的圖表展示,包括曲線圖、柱狀圖、散點圖等,同時還提供了高級功能,如多個坐標軸、數(shù)據(jù)縮放和平移、數(shù)據(jù)點的交互操作等。
通過QCustomPlot庫,可以將采集到的信號以直觀的方式展示出來,更好地觀察和分析信號的特征。同時,它也為信號處理和數(shù)據(jù)分析提供了便利,例如頻譜分析、時域分析等。這對于科學研究、工程控制等領域都具有重要意義。