Мне нужно взять двухмерный график из n точек и уменьшить его до r точек (где r - это конкретное число, меньшее n).Например, у меня может быть два набора данных с немного различным количеством общих точек, скажем, 1021 и 1001, и я бы хотел, чтобы оба набора данных имели 1000 точек.Мне известны несколько алгоритмов упрощения: упрощение Ланга и Дуглас-Пеккер.Я использовал Lang в предыдущем проекте с немного другими требованиями.
Особые свойства алгоритма, который я ищу:
1) должны сохранять форму линии
2) должен позволить мне сократить набор данных до определенного количества точек
3) сравнительно быстро
В этом посте обсуждаются достоинства различных алгоритмов.Я опубликую второе сообщение с советами по реализации на Java или Groovy (зачем изобретать велосипед).
Я обеспокоен требованием 2 выше.Я не являюсь экспертом в этих алгоритмах, чтобы знать, могу ли я диктовать точное количество выходных точек.Реализация Lang, которую я использовал, взяла lookAhead, допуск и массив Points в качестве входных данных, поэтому я не вижу, как диктовать количество точек в выходных данных.Это критическое требование моих текущих потребностей.Возможно, это связано с конкретной реализацией Lang, которую мы использовали, но я не видел много информации о Lang в Интернете.В качестве альтернативы мы могли бы использовать Дугласа-Пекера, но, опять же, я не уверен, можно ли указать количество точек в выходных данных.
Я должен добавить, что я не являюсь экспертом в этих типах алгоритмов или в любом другом виде, поэтому я ищу простой совет типа смертных :) Как мне удовлетворить требования 1 и 2 выше?Я бы пожертвовал производительностью ради правильного решения.