Using knnsearch to find nearest values ignoring NaN's
古いコメントを表示
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 件のコメント
Melissa
2015 年 5 月 11 日
Sean de Wolski
2015 年 5 月 12 日
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
2015 年 5 月 16 日
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.
採用された回答
その他の回答 (1 件)
Thomas Koelen
2015 年 5 月 11 日
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!
カテゴリ
ヘルプ センター および File Exchange で Grid Lines, Tick Values, and Labels についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!