create Matlab function to preform a running average filter

조회 수: 1 (최근 30일)
AngelsaAtWar
AngelsaAtWar 2013년 4월 19일
답변: Ma sa 2016년 11월 28일
hi there I am clueless on how to create Matlab function to preform a running average filter using the following data:
[1 9 10 11 12 13 14 15 14 13 12 11 10 9 1]
may someone help me please and thank you
  댓글 수: 1
Yao Li
Yao Li 2013년 4월 19일
I think it depends on the precision of the filter. Do you want to calculate the mean value of ervery 3 points, 5 points or 7 points, etc?

댓글을 달려면 로그인하십시오.

채택된 답변

Jan
Jan 2013년 4월 19일
편집: Jan 2013년 4월 19일
You can use filter to achieve this:
x = [1 9 10 11 12 13 14 15 14 13 12 11 10 9 1];
n = 3; % Number of elements to be averaged
y = filter(ones(1, n) / n, 1, x);
But perhaps this does not satisfy your demands at the edges. You can do it manually also:
m = (n - 1) / 2;
len = size(x, 2);
y = x;
div = ones(size(x));
for k = 1:m
k2 = 2*k; % Slightly faster
z = zeros(1, k);
y = y + [z, x(1:len - k2) + x(1 + k2:len), z];
div(k + 1:len - k) = div(k + 1:len - k) + 2;
end
y = y ./ div;
Here the first and last elements are not changed, while the 2nd and 2nd last are averaged using 3 elements for all n >= 3.
You will find much more approachs, when you search in the FileExchange. It is a good idea to check, if others have published a solution there, before you ask in the forum.

추가 답변 (1개)

Ma sa
Ma sa 2016년 11월 28일
How can i creat an average filter of size(3*3)??

카테고리

Help CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by