Data averaging on a specific cell of a matrix

1 Ansicht (letzte 30 Tage)
Junayed Chowdhury
Junayed Chowdhury am 20 Mär. 2018
Kommentiert: Junayed Chowdhury am 20 Mär. 2018
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

Akzeptierte Antwort

Akira Agata
Akira Agata am 20 Mär. 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;

Weitere Antworten (1)

Junayed Chowdhury
Junayed Chowdhury am 20 Mär. 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

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by