How to remove the pairing X value when Y is NaN?

1 visualizzazione (ultimi 30 giorni)
swallow ooi
swallow ooi il 13 Mar 2013
I have a series of XY pairing data where:
X [0 0.5 1 1.5 2 2.5]
Y [2 NaN 7 8 NaN NaN]
I have use this code Z=Y(isfinite(Y)) to remove the NaN in Y.
My question is how can I remove the data for X as well when the pairing Y data is NaN. It means I want to get the results in this way:
X [0 1 1.5]
Y [2 7 8]
Thanks so much~

Risposte (3)

Friedrich
Friedrich il 13 Mar 2013
Hi,
since X and Y have the same length do:
X = X(isfinite(Y))
Y = Y(isfinite(Y))

Vishal Rane
Vishal Rane il 13 Mar 2013
The simplest way I can think of is :
NotNaN = ~isnan(Y); % gives 1 0 1 1 0 0
Y(NotNaN) % gives 2 7 8
X(NotNaN) % gives 0 1.0000 1.5000

Andrei Bobrov
Andrei Bobrov il 13 Mar 2013
Modificato: Andrei Bobrov il 13 Mar 2013
X = [0 0.5 1 1.5 2 2.5];
Y = [2 NaN 7 8 NaN NaN];
XY = [X(:),Y(:)];
out = XY(~isnan(Y),:); % your case
% the general case
out = XY(all(~isnan(XY),2),:);

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by