學(xué)習(xí)LabVIEW(九)——匹配濾波的簡單仿真之二 作者: 時間:2017-01-09 來源:網(wǎng)絡(luò) 加入技術(shù)交流群 掃碼加入和技術(shù)大咖面對面交流海量資料庫查詢 收藏 之前在《學(xué)習(xí)LabVIEW(六)——匹配濾波的簡單仿真》中,我們直接利用“信號處理->信號運算->互相關(guān)”節(jié)點實現(xiàn)了匹配濾波。框圖非常簡單,把信號序列和同步序列同時輸入到互相關(guān)節(jié)點,輸出就是想要的結(jié)果了?;ハ嚓P(guān)節(jié)點如何運算互相關(guān)呢?它包含了兩種算法,一種是時域的卷積,另一種是頻域的相乘,利用FFT提高計算效率。今天我們自己利用數(shù)據(jù)隊列和向量點積(內(nèi)積)實現(xiàn)互相關(guān)的運算。數(shù)據(jù)隊列節(jié)點發(fā)揮了一組移位寄存器的作用(見《幽默的LabVIEW編程之濫用多個移位寄存器》),點積節(jié)點則實現(xiàn)了加權(quán)求和。這就是內(nèi)積或者相關(guān)的運算本質(zhì)。首先,信號的構(gòu)造還是使用了MATLAB節(jié)點,這樣比較方便而且便于調(diào)整,如下圖所示:MATLAB節(jié)點輸出的信號是一個數(shù)組,我們利用for-loop和索引模式的隧道,將數(shù)組拆成一個一個的元素,在循環(huán)中依次處理,相當(dāng)于把一個Buffer中的數(shù)據(jù)轉(zhuǎn)換成了一個標(biāo)量構(gòu)成的數(shù)據(jù)流。注意syncHead進入循環(huán)的隧道沒有使用索引模式,因為在循環(huán)內(nèi)部要把syncHead當(dāng)做一個整體來處理。在循環(huán)內(nèi)部,將外部來的數(shù)據(jù)流中的標(biāo)量數(shù)據(jù)輸入到數(shù)據(jù)隊列節(jié)點,然后將數(shù)據(jù)隊列節(jié)點的輸出與同步頭使用點積節(jié)點作內(nèi)積運算。運算得到的標(biāo)量通過一個索引模式的隧道連接到循環(huán)之外的scope,這樣就能在界面上看到濾波的結(jié)果。完整的程序框圖如下所示:程序的一次運行結(jié)果如下圖所示:至于這種在時域?qū)崿F(xiàn)的相關(guān)運算,是不是不如基于FFT的頻域運算高效呢?實際上,序列點數(shù)很少時,時域的實現(xiàn)更高效一些。
評論