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');
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!