Hello! I have an array of data where there are zeros and I need to replace them. How can I do this?
data=[100 95 0 90 0 85 0 0 70 65 ] % as it is
data=[100 95 92.5 90 87.5 85 ] % and so it is necessary
is there a special function in matlab for this?

5 comentarios

madhan ravi
madhan ravi el 2 de Sept. de 2019
What happened to 0 0 70 65 ??
Lev Mihailov
Lev Mihailov el 2 de Sept. de 2019
I decided not to add them, I thought, and so it will be clear
madhan ravi
madhan ravi el 2 de Sept. de 2019
Provide the complete result for the example provided above, instead of keeping it as a mystery after someone answers.
Lev Mihailov
Lev Mihailov el 2 de Sept. de 2019
Well, actually, I need
data=[2 0 1]
data=[2 1.5 1]
Adam
Adam el 2 de Sept. de 2019
I'm guessing you want to replace 0s with the mean of the values either side of them, but as madhan ravi says, if you cut off a fundamental part of the example it's impossible to know. Replacing individual zeros with the mean of values either side is easy. Replacing zeros when you get multiple of them in a row is a little less clearly defined.

Iniciar sesión para comentar.

 Respuesta aceptada

Andrei Bobrov
Andrei Bobrov el 2 de Sept. de 2019
Editada: Andrei Bobrov el 2 de Sept. de 2019

2 votos

data=[100 95 0 90 0 85 0 0 70 65 ]';
data(data == 0) = nan;
new_data = fillmissing(data,'linear');
or
ii = (1:numel(data));
lo = data ~= 0;
new_data = interp1(ii(lo),data(lo),ii);

Más respuestas (0)

Categorías

Productos

Preguntada:

el 2 de Sept. de 2019

Editada:

el 2 de Sept. de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by