Data averaging on a specific cell of a matrix

1 view (last 30 days)
Hello, Say I have a matrix (A1) of single coloumn and 1000 rows ( 1000 X 1) in size. I have 0 values at random cells in it. Say row 55 has a 0 value, where row 54 has a values of 5.5 and row 56 has a value of 4.5. How to write a for loop that will find the 0 values and fill it with the averaging of its previous and after cell/row values?
thanks in advance

Accepted Answer

Akira Agata
Akira Agata on 20 Mar 2018
You don't have to use for-loop for this. Assuming A1(1) and A1(1000) are not zero, and there is NO consecutive 0s, the following code can fill the 0 values with the averaging of its neighbourings.
idx = find(A1 == 0);
A1(idx) = (A1(idx+1)+A1(idx-1))/2;

More Answers (1)

Junayed Chowdhury
Junayed Chowdhury on 20 Mar 2018
I used this one and it worked :)
for i=1:size(A1) if A1(i,1)==0 A1(i,1)= ((A1(i+1,1)+A1(i-1,1))/2); end end

Community Treasure Hunt

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

Start Hunting!