Ignoring NaNs for Surface Fit

Hi,
I have a 2D matrix, with certain values missing - represented by NaNs. I have organised the data into three column vectors (x,y,z) and am able to pass the data through the Surface Fitting tool 'sftool'. This ignores the NaNs and works perfectly, however whenever I try and manually do this fit using the 'fit()' function it won't allow me because of the NaNs.
How can I ignore these NaNs in a similar way for this? All the methods I've come across for ignoring NaNs so far won't work as I have to keep all three vectors the same length and in order.
Any help would be greatly apprecitated.

 Accepted Answer

Sean de Wolski
Sean de Wolski on 13 Aug 2012
Edited: Sean de Wolski on 13 Aug 2012
xyz = [x y z]; %x y z are column vextors
xyz_no_nans = xyz(~any(isnan(xyz),2),:); %keep rows which have no nans
x = xyz_no_nans(:,1); %etc.

3 Comments

Thanks for your reply!
Unfortunately, from what I understand, this gets rid of the entirety of any row that contains a NaN?
My matrix contains far more NaNs than actual values and so this method leaves me with empty vectors. I need a method that will not remove any of the correct values. Is there a way to do this or have a misunderstood/used your suggestion? Thanks again.
How do you propose to keep a set of xyz pairs if any of them is a NaN?
x = pi,y=17,z = nan;
What useful information can you gather from the above?
I'm sorry, I was confusing myself because this didn't work at first. I now understand what it's doing and it's exactly what I want. Have got it all working - many thanks! This has saved me hours of time...

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!