Using knnsearch to find nearest values ignoring NaN's
Ältere Kommentare anzeigen
Hello,
I have two datasets. A is a high resolution global dataset, and B is a smaller dataset with sparse points. I want to find the indices of lat and lon in A that are closest to B lat and lon, but I want to ignore the NaN values in A and instead get the next closest value that isnt NaN.
Is there any way to do this?
A is a 2D dataset (latxlon) while B is three individual vectors of lat, lon, and data Which is why it makes it hard to use a lot of other commands.
Please let me know if you have any ideas,
Thanks,
Melissa
3 Kommentare
Melissa
am 11 Mai 2015
Sean de Wolski
am 12 Mai 2015
I think you need to project your lat/lon into x/y or compute the distance using a custom distance function in knnsearch such as distance() or ecefOffset. Otherwise distance is not measured on a sphere and is useless.
David Young
am 16 Mai 2015
Sean - you are right in that computing distances using lat and long as if they were euclidean coordinates is going to create some degree of error. But "useless" is too strong - provided that the lat-long grid is reasonably fine, and that there isn't an issue with wraparound, interpolation using a lat-long coordinate system may well be fine for many problems.
Akzeptierte Antwort
Weitere Antworten (1)
Thomas Koelen
am 11 Mai 2015
What you could do is:
Lets say you have an array like this:
A= [10 20 30 40 50 60 70 80 100]
and the smaller array like this:
[13 22]
For now let's just look at
B=[13]
We devide 13 from A and take the absolute.
C=abs(A-B)
this gives us:
C =
3 7 17 27 37 47 57 67 87
now can find the minimum, and get it's index.
[row,col]=min(C);
This gives index [1,1] which makes sense because 10 is closest to 13!
Kategorien
Mehr zu Grid Lines, Tick Values, and Labels finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!