What code to implement to create a non-causal moving average filter that would use future values as input?
7 ビュー (過去 30 日間)
古いコメントを表示
I am quite confused as I am able to write a code for a simple causal moving average filter but do not know that what would differ if it's a non causal one. Please provide me the code for non-causal moving average filter for any number of M values.
0 件のコメント
回答 (2 件)
Image Analyst
2015 年 10 月 24 日
See https://en.wikipedia.org/wiki/Causal_filter "In signal processing, a causal filter is a linear and time-invariant causal system. The word causal indicates that the filter output depends only on past and present inputs. A filter whose output also depends on future inputs is non-causal, whereas a filter whose output depends only on future inputs is anti-causal. "
If your signal is time, with early times on the left and later times on the right, then I guess a non-causal filter would be a window that had an odd number of elements and didn't have any on the past/left side of it, like
kernel = [0,0,0,0,1,1,1,1,1] / 5;
out = imfilter(signal, 1, kernel);
or something like that.
3 件のコメント
Image Analyst
2015 年 10 月 25 日
No, it only averages over half the filter window. To do a moving average over the whole window, which is what you're asking now, you'd use all 1's.
y = conv(x, ones(1, M)/M, 'full');
Nalini
2017 年 2 月 21 日
編集済み: Nalini
2017 年 2 月 21 日
Generally for noise reduction,which is better, a causal filter or a non-causal filter?
Also, which function can I use to perform moving average of array (samples of a sensor signal)?
What's the difference between 'movmean' and 'tsmovavg'
thank you very much!
hawi aboma
2021 年 3 月 27 日
編集済み: hawi aboma
2021 年 3 月 27 日
I'm confused how to write the matlab code for and design filter for cousal and non cousal system, and how to check real time filtert?
1 件のコメント
Image Analyst
2021 年 3 月 27 日
What's confusing? For a sliding window filter, half of it should be zeroed out - the half that refers to the "future".
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!