What code to implement to create a non-causal moving average filter that would use future values as input?
이전 댓글 표시
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.
답변 (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
3011
2015년 10월 24일
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일
0 개 추천
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".
카테고리
도움말 센터 및 File Exchange에서 MATLAB에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!