Average of the nine surrounding cells
3 次查看(过去 30 天)
显示 更早的评论
I have two matrices, matrix1 contains genuine data and matrix2 is filled with 0's and a few 1's, i wanted to know if there is a way to calculate the average of all 9 cells surrounding the cell with the 1 in the matrix with the genuine data. i.e when a 1 is spotted in matrix2 then the average of the 9 surrounding cells to the corresponsinding cell in matrix1 is calculated.
Im not sure if this is clear
0 个评论
采纳的回答
Stephen23
2020-5-29
编辑:Stephen23
2020-5-29
out = matrix2.*conv2(matrix1,ones(3,3),'same')/9;
2 个评论
Stephen23
2020-5-29
Instead of dividing by 9 you could divide by a matrix of the same size, where each element's value gives the number that you want to divide by. Also note that the corners have 4, the sides 6, and the middle 9:
D = ones(size(matrix1))*6;
D(2:end-1,2:end-1) = 9;
D([1,end],[1,end]) = 4;
out = matrix2.*conv2(matrix1,ones(3,3),'same')./D;
Or if you have the image toolbox you could just use blockproc:
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Segmentation and Analysis 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!