I have two columns, X and Y.
The X column is a series of consecutive numbers (1,2,3...). The Y column is my data.
I want to make Y=NaN at certain X values
for example, lets say: x= 1,2,3,4,5 and y= .4,.6,.2,.6,.9
I want to remove the y=.6 that corresponds to x=4 How do I do this?
Thanks!

 Réponse acceptée

David Fletcher
David Fletcher le 12 Mar 2018
Modifié(e) : David Fletcher le 12 Mar 2018
data=[1 0.4;2,0.6;3,0.2;4,0.6;5 0.9]
index=data(:,1)==4;
data(index,2)=NaN
Something like this?

6 commentaires

Devon Fisher-Chavez
Devon Fisher-Chavez le 12 Mar 2018
Yes, except my actual X and Y columns are extremely large and I dont want to combine them into one line.
I was hoping I could do something like "if X=... then Y= NaN" except in Matlab language
for a single value (ex. 4) I was able to say
y(x == 4) = NaN
But I can only do it for a single value of X. I'm a total novice haha
David Fletcher
David Fletcher le 12 Mar 2018
Modifié(e) : David Fletcher le 12 Mar 2018
If you want to do it for multiple x values you could chain the clause together with logical or
y(x == 4|x==5|x==7) = NaN
it could become a bit cumbersome if you want to screen out a lot of x values though, so you could index with a vector of the scalers you want to screen out
y(any(x==[1 2 5 6 9])')=NaN
Devon Fisher-Chavez
Devon Fisher-Chavez le 12 Mar 2018
I tried "y(any(x==[1 2 5 6 9])')=NaN" but it says "matrix dimensions must agree"
David Fletcher
David Fletcher le 12 Mar 2018
Modifié(e) : David Fletcher le 12 Mar 2018
Sorry, it's probably because I was working with a row vector rather than a column - transpose it [1 2 5 6 9]'
y(any(x==[1 2 3]')')=NaN
Devon Fisher-Chavez
Devon Fisher-Chavez le 12 Mar 2018
That works! thank you so much!
David Fletcher
David Fletcher le 12 Mar 2018
OK no probs

Connectez-vous pour commenter.

Plus de réponses (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by