Compute average of each value in a matrix without using for

Hi all,
I was wondering is it possible to alter each value of a matrix based on the average value of its neighbors, wihtout using for loops?
Thanks in advance.

댓글 수: 2

It would eliminate a lot of guesswork on the part of people trying to help you if you could be much more specific about what you want to do, and ideally provide at least one example of the input and output you would expect from this.
You are right...
Well basicaly lets say i have
x= [0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0]
What i want is to create a new matrix that will be
newx= [0 0 (2/9) 0 0 0 0 2 0 0 0 0 (3/9) 1 0 0 0 0 0 0]
Here i randomly changed only two values to show that the get the average value of all the neighboring values.

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

 채택된 답변

Honglei Chen
Honglei Chen 2012년 10월 31일
you can use conv2 or imfilter, for example
x = magic(3)
y = conv2(ones(3)/9,x)

댓글 수: 5

Thanks...
Matt J
Matt J 2012년 10월 31일
편집: Matt J 2012년 10월 31일
You can do this slightly more efficiently by taking advantage of separability
h=ones(3,1)/3;
y=conv2(x,h,h);
Yes, that's what I really meant.
Thanks alot guys.

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

제품

질문:

2012년 10월 31일

Community Treasure Hunt

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

Start Hunting!

Translated by