LabVIEW又稱為G語言,簡單易學、形象直觀,採用圖形化的編程方式,是專為測試、測量和控制應用而設計的系統工程軟體。因此,LabVIEW軟體在數據仿真、信號分析處理方面有著得天獨厚的優勢。
本文以一個具體實例,演示在LabVIEW中如何實現一個虛擬的FFT分析儀設計,包括採樣信號的仿真、頻域的FFT分析及數據結果的圖形顯示等功能。
這個例子也剛好對應了一個虛擬儀器所具有的三個基本組成環節的實現,即在軟體中如何實現數據採集、分析處理及圖形顯示的功能。
實例說明
虛擬FFT分析儀前面板軟體界面如下圖所示:
虛擬FFT分析儀軟體中包含的功能如下:
仿真信號產生功能,可產生能夠疊加均勻白噪聲的正弦波、三角波、方波及鋸齒波等常用信號,對信號的頻率、幅值等參數能夠進行設置;FFT頻譜分析功能,可進行平均參數設置(如平均模式、加權模式及平均次數等)、窗函數設置、重新開始平均設置等,同時也給出了平均是否完成的指示信息;圖形顯示功能,包括原始時域仿真信號波形圖及FFT頻譜的幅度譜顯示,且FFT幅度譜可設置是否為對數顯示,在這個例子的基礎上也可擴展為顯示頻譜的相位譜信息;程序能夠連續運行,仿真真實頻譜儀的連續採集、分析及顯示功能;可設置全局的採樣頻率、採樣點數等參數信息。程序框圖實現
本例軟體界面包含的功能看上去雖然很複雜,但由於LabVIEW中函數的高度集成性,在框圖程序中的實現代碼並不複雜,如下圖所示:
主程序使用一個While循環結構,每隔100ms執行一次循環。在循環內部主要調用了兩個函數即「Basic Function Gernerator.vi」和「FFT Spectrum(Mag-Phase).vi」,分別實現仿真信號的產生和實現FFT頻譜分析(得到幅值譜和相位譜)功能。在軟體前面板上的參數控制項幾乎都是作為這兩個函數的必要參數而存在的。
下面對這兩個關鍵函數作一個簡單的說明。
(1) 「Basic Function Gernerator.vi」
該函數為LabVIEW中提供的基本函數發生器函數,調用該函數可產生正弦波、三角波、方波及鋸齒波等常用信號,其輸入輸出參數如下圖所示:
通過該函數產生的信號與均勻白噪聲信號進行疊加後,即可得到本例所要求的仿真信號了。
(2) 「FFT Spectrum(Mag-Phase).vi」
該函數功能是計算時域信號的平均FFT頻譜。該VI通過幅度和相位返回FFT值。其輸入輸出參數如下圖所示:
主要參數說明如下:
「重新開始平均」參數:指定VI是否重新啟動所選平均過程。如重新開始平均的值為TRUE,VI重新啟動所選平均過程。如重新開始平均的值為FALSE,VI不會重新啟動所選平均過程。默認值為FALSE。 第一次調用該VI時,平均過程會自動開始。典型情況為:在平均過程中,主輸入發生改變時,則會重新啟動平均過程。
「窗」參數:用於設置時域信號的加窗函數。默認值為Hanning窗。其支持的窗函數類型包括矩形窗、三角窗、高斯窗、Hanning (默認)、Hamming、Blackman-Harris、Exact Blackman、Blackman、Flat Top、4階/7階Blackman-Harris、Low Sidelobe、Blackman Nuttall、Bartlett-Hanning、Bohman、Parzen、Welch、Kaiser、Dolph-Chebyshev等。
「平均參數」參數:該簇用於定義如何進行平均值計算。包括平均類型、加權類型和平均次數的設置,詳細說明如下圖所示:
「查看」參數:指定用於返回VI不同結果的方式,分別指定是否以分貝形式顯示結果,是否展開相位,相位結果是否需要由弧度轉換為度等。
「幅度」參數:返回平均FFT譜的幅度和頻率範圍。其中,f0返回譜的起始頻率,以赫茲為單位;df返回譜的頻率解析度,以赫茲為單位;幅度是平均FFT譜的幅度(如輸入信號以伏特為單位(V),幅度的單位為伏特-rms(Vrms)。如輸入信號不是以伏特為單位,幅度的單位為輸入信號單位-rms)。
運行上面的程序,即可在軟體前面板中看到,程序能夠連續不斷產生時域仿真信號,並實時計算其FFT頻譜信息,將結果在波形圖控制項上進行顯示。同時,在程序運行過程中可修改仿真信號的參數以產生新的波形,也可以修改FFT分析中的如平均參數等信息,修改後也會得到正確的頻譜信息。
總結
從這個例子中可以看出,在LabVIEW中實現信號的仿真、分析處理及圖形顯示功能,相對於其它程式語言如C語言,由於LabVIEW中函數功能的高度封裝性以及控制項的豐富多樣性,其編程難度大大降低了,對於複雜信號處理算法的驗證及結果的圖形顯示提供了極大的便利性。
本文由編碼那些事原創,請關注+轉發+收藏+點讚,帶你一起長知識!