How do I make an average of points ?

2 views (last 30 days)
Ernest Adisi
Ernest Adisi on 22 Aug 2018
Edited: jonas on 22 Aug 2018
Hi, say I have an 11*10 matrix and for every point in the 6th row, I want matlab to take an average of the surrounding points and make a new row; ie 1 point has 8 surrounding points then the same for each point in the row, how would this be done please ? Thanks
  2 Comments
jonas
jonas on 22 Aug 2018
Please provide an example with input and desired output
Ernest Adisi
Ernest Adisi on 22 Aug 2018
1 2 3 4 5 6 7 8 9 10
5 2 4 6 7 4 5 6 7 8
1 2 3 4 5 6 7 8 9 10
Eg. 2 on the second row would be (1+2+3+5+2+4+1+2+3)/9
Then 4 would be the same pattern
(2+3+4+2+4+6+2+3+4)/9. Etc
So a new row is formed with every point taken as the average of the immediate surrounding points

Sign in to comment.

Accepted Answer

jonas
jonas on 22 Aug 2018
Edited: jonas on 22 Aug 2018
Based on your simple example:
A=[1 2 3 4 5 6 7 8 9 10;
5 2 4 6 7 4 5 6 7 8;
1 2 3 4 5 6 7 8 9 10]
out = conv2(A,ones(3,3)./9,'same')
This will give you the average of all 9 neighboring values. Second row:
out(2,:)
ans =
Columns 1 through 10
1.4444 2.5556 3.3333 4.5556 5.2222 5.7778 6.3333 7.3333 8.3333 5.8889

More Answers (1)

Yuvaraj Venkataswamy
Yuvaraj Venkataswamy on 22 Aug 2018
Edited: Yuvaraj Venkataswamy on 22 Aug 2018
Check this,
if true
X = rand(11,10);
k = 6;
MA = movmean(X,[(k-1) 0]);
Y = MA(k:k:end,:);
end

Community Treasure Hunt

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

Start Hunting!