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

3 visualizzazioni (ultimi 30 giorni)
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];

Risposta accettata

Chunru
Chunru il 28 Lug 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

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by