nested for loop for moving average filter
古いコメントを表示
Hello Everyone,
I want to implement nested for loop in MATLAB the first loop should run from 3 to n and inside this loop the second for loop should run for 1:5. My problem is I want to take averages of 5 numbers but a moving average. So i should start with average from elements 1 to 5 for first row, elements 2 to 6 for second row , elemets 3 to 7 for third row.
Please help me with this problem.
Thanks in Advance
3 件のコメント
Jan
2012 年 11 月 29 日
What have you tried so far? The text description seems to be clear enough to convert this directly to Matlab.
Jatin Arora
2012 年 11 月 29 日
編集済み: Jatin Arora
2012 年 11 月 29 日
Image Analyst
2012 年 11 月 29 日
You always have to decide what to do at the end when the window falls outside the signal. Looks like you want to just limit the window so that it never goes outside your signal. I think you need to do
for i = 2 : end-2 % not 3:end
where No is 2, which is the half width of a 5 element wide window.
回答 (2 件)
Jan
2012 年 11 月 29 日
No loops required in Matlab:
n = length(x);
mx = (x(1:n-4) + x(2:n-3) + x(3:n-2) + x(4:n-1) + x(5:n)) / 5;
1 件のコメント
Daniel Shub
2012 年 11 月 29 日
I thought this would be faster than conv, but I was wrong. I wonder what the fastest method is for a moving average filter.
Daniel Shub
2012 年 11 月 29 日
While you can do this with a loop, MATLAB has some highly optimized commands for filtering. The simpliest is probably conv.
First create some dummy date
N = 20;
x = randi(10, N, 1);
The M point moving average filter is
M = 5;
y = conv(x, ones(M, 1));
カテゴリ
ヘルプ センター および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!