2016-09-15 130 views
1

我正在使用一些加速度計數據,並且有人建議我做一些窗口來隔離信號中的不同事件。與大多數情況不同的是,MATLAB中的窗口記錄功能很差,我希望能夠實現窗口化的一些簡單示例(或建議閱讀和鏈接)。我還想知道爲什麼要打開窗戶,而不是將數據分成幾個部分並分析各個框架。謝謝。在MATLAB中開窗信號

測試或事件的一個示例如下所示:enter image description here

我的初始數據是這樣的:以上所示的單尖峯擴大。

也可以建議我如何使用MATLAB窗口第一個圖。

enter image description here

回答

1

窗更多的是信號處理理論不是編程的領域,但它理解的FFT的輸出時,那麼也許值得解釋更詳細一點是非常重要的。基本上,當你截斷一個信號(例如以塊的形式處理它)時,你正在以一種相當令人驚訝的方式改變頻域。您最終使用「窗口」函數來卷積(即拖尾)所有頻率項。如果除了截斷之外什麼都不做,那麼這個函數就是sin()/ sin()。會發生什麼情況是,這會將原始信號的頻率內容擴展到整個頻譜上,並且如果存在主要分量,則其他所有內容都會被掩蓋。塊越短,效果越差,因爲窗口在頻域中變得更加粗壯。

使用漢明,漢寧或布萊克曼等形狀窗口進行開窗會改變頻域響應,使塗抹更加侷限於原始信號。由此產生的頻域更清晰。

對數據進行分析,X塊,那麼你應該做的是什麼

transform=fft(x.*hanning(length(x))); 

其結果將是複雜的,您可以用plot(20*log10(abs(transform)))

顯示數學分析看https://cnx.org/contents/[email protected]/Spectrum-Analysis-Using-the-Di

如果你想要一個實際的實際操作經驗的窗口做什麼,請嘗試https://cnx.org/contents/[email protected]/Spectrum-Analyzer-MATLAB-Exerc

+0

感謝您的詳細回覆@Dave。我正在使用的一些信號由許多彼此獨立的短離散事件組成。在這種情況下,可以將信號分成每個單個事件並計算每個事件的FFT。 – Michael

+0

如果事件很短,那麼您肯定需要窗口數據!短序列導致寬窗口,單獨截斷導致最壞的可能拖尾。嘗試不同的窗口是一件簡單的事情 - 只需用更合適的東西替換「漢明」。儘管如此,您需要小心一點,因爲窗口功能越強(離頻譜分量較遠的頻率處的模糊程度越低),則主要分量越寬,這意味着頻域中的分辨率下降。你什麼也沒得到! – Dave

+0

事件很短,但事件之間的信號完全消失。這只是我們記錄數據的方式。我們不再爲每個事件或測試記錄一個信號,而是在進行下一次測試之前不斷記錄並允許所有瞬態信號死亡。我將在原始問題中發佈一個例子。 – Michael