計算簡單一維數據向量的運行平均值似乎很簡單。事實上,FILTER MATLAB的文檔高興地宣稱是這樣的:在MATLAB中計算運行平均數
您可以使用過濾器來查找正在運行的平均無 使用for循環。本示例查找的16元素矢量的運行平均值 ,使用3窗口大小:
D = [1:0.2:4]';
windowSize = 3;
F = ones(1,windowSize)/windowSize;
Df = filter(F,1,D);
其結果是:
對於我而言,有兩個煩人關於這個結果的一些事情:輸出點n是輸入點n-(windowSize-1)... n(即不居中,如水平移位所證明的)的平均值,並且可用數據左邊的點被視爲零。
FILTFILT涉及這兩個問題,但有其他缺點。它是信號處理工具箱的一部分,它不能很好地處理NaN(我想從中排除)。
Somepeople對FEX顯然有同樣的挫折感,但對我來說這似乎很奇怪,這種簡單的事情需要自定義代碼。我在這裏錯過的任何東西?
'filtfilt'不依賴於其他信號處理工具箱的功能,並且是m代碼。因此,您可以簡單地將其複製粘貼到代碼中,以便根據需要進行更改。 – Mikhail 2010-08-11 07:15:04
如果您不擁有SP工具箱,則無法確定版權。我的直覺告訴我這是違法的。 – Jonas 2010-08-11 20:35:26