Borrar filtros
Borrar filtros

How to make a number NaN when its both neighbours are NaN?

1 visualización (últimos 30 días)
MP
MP el 28 de Jul. de 2022
Comentada: MP el 28 de Jul. de 2022
I would like to find the numbers sandwiched between two NaN's and make them NaN.
I have a matrix:
A = [NaN 2.35 NaN 2.358 1.68 1.98 2.88 NaN 2.68 NaN 2.70 NaN 2.20 NaN 3.03; NaN NaN 2.77 NaN 2.67 1.87 2.56 1.88 2.39 NaN 2.77 2.83 NaN 2.59 NaN];
I would like to check the numbers that is sourrounded by NaN values on both the sides.
If the number has NaN on both sides, then make that number as NaN;
I want the output to be like,
B = = [NaN NaN NaN 2.358 1.68 1.98 2.88 NaN NaN NaN NaN NaN NaN NaN 3.03; NaN NaN NaN NaN 2.67 1.87 2.56 1.88 2.39 NaN 2.77 2.83 NaN NaN NaN];

Respuesta aceptada

Chunru
Chunru el 28 de Jul. de 2022
A = [NaN 2.35 NaN 2.358 1.68 1.98 2.88 NaN 2.68 NaN 2.70 NaN 2.20 NaN 3.03;
NaN NaN 2.77 NaN 2.67 1.87 2.56 1.88 2.39 NaN 2.77 2.83 NaN 2.59 NaN];
B = [NaN NaN NaN 2.358 1.68 1.98 2.88 NaN NaN NaN NaN NaN NaN NaN 3.03;
NaN NaN NaN NaN 2.67 1.87 2.56 1.88 2.39 NaN 2.77 2.83 NaN NaN NaN];
C = A;
for i=1:size(C, 1)
for j=2:size(C,2)-1
if isnan(C(i, j-1)) && isnan(C(i, j+1))
C(i, j) = NaN;
end
end
end
A, B, C
A = 2×15
NaN 2.3500 NaN 2.3580 1.6800 1.9800 2.8800 NaN 2.6800 NaN 2.7000 NaN 2.2000 NaN 3.0300 NaN NaN 2.7700 NaN 2.6700 1.8700 2.5600 1.8800 2.3900 NaN 2.7700 2.8300 NaN 2.5900 NaN
B = 2×15
NaN NaN NaN 2.3580 1.6800 1.9800 2.8800 NaN NaN NaN NaN NaN NaN NaN 3.0300 NaN NaN NaN NaN 2.6700 1.8700 2.5600 1.8800 2.3900 NaN 2.7700 2.8300 NaN NaN NaN
C = 2×15
NaN NaN NaN 2.3580 1.6800 1.9800 2.8800 NaN NaN NaN NaN NaN NaN NaN 3.0300 NaN NaN NaN NaN 2.6700 1.8700 2.5600 1.8800 2.3900 NaN 2.7700 2.8300 NaN NaN NaN

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by