Find set of all adjacent points that are close to each other
8 次查看(过去 30 天)
显示 更早的评论
I would like to find in Y[n] a set of adjacent points that are close to each other, but I don't get all the desired points. For example.
Y = [ 1.1 1.12 9.2 8.3 8.295 8.292 4.1 4.12 4.19];
dY_idx = find(abs(diff(Y)) < 0.022);
Y_adj_close = Y(dY_idx)
This code results in:
Y_adj_close =
1.1000 8.3000 8.2950 4.1000
But I would like the result to be:
Y_adj_close =
1.1000 1.1200 8.3000 8.2950 8.2920 4.1000 4.12
How can I get the desired result? (Note: I probably could also do a Y = fliplr(Y) followed by a second round and then combine results to get all the unique points, but that would be two sets of operations on a large vector. Hoping for a faster solution.)
0 个评论
采纳的回答
Tommy
2020-6-5
How about this?
logidx = abs(diff(Y)) < 0.022;
Y_adj_close = Y([logidx 0] | [0 logidx]);
Y_adj_close =
1.1000 1.1200 8.3000 8.2950 8.2920 4.1000 4.1200
3 个评论
Paul Hoffrichter
2020-6-6
编辑:Paul Hoffrichter
2020-6-6
My new question deals with my need to keep dimension of x and y the same. I forgot to mention that in this question. I used your answer here to work out an answer that works. Just wondering whether it can be modified to perform better.
Just using plot in the question to ensure dimensions match, and provide a quick sanity check.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Discrete Math 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!