Подгоните несколько отрезков к кривой, пытаясь отобрать горизонтальные и вертикальные линии - PullRequest
0 голосов
/ 25 сентября 2019

Проблема / Цель

Я хочу аппроксимировать кривую, заданную точкой, установленной в Python, используя и подбирая упрощенные линии, предпочитая горизонтальные и вертикальные линии узким угловым.Пример показан на прилагаемом рисунке.Существует ли какая-либо математическая теория или существующий алгоритм, который выполняет это?

Curve fitting problem

Справочная информация - Идеи

Это должно упростить данную геометрию.Как правило, это проблема интерполяции.Я уже нашел и попробовал Piecewise Linear Fit -Approach (пакет python PWLF ).Это работает сравнительно хорошо, но нужно определить количество сегментов для достижения удовлетворительных результатов.Когда я использую 6 сегментов в моем случае (см. Рисунок), он работает сравнительно хорошо.Однако проблема может измениться, поэтому количество сегментов.Процесс подбора «оптимизации» не выполняется, используя только 2 линейных сегмента.Может быть, есть алгоритм, в котором я могу наложить больше «веса» на горизонтальные / вертикальные линии или иным образом настроить узкие углы после этого.При желании я также могу указать точки данных.

Аналогичные темы: Кусочно-точная аппроксимация

Разница здесь в том, что начальная точка - это функция, поэтому никаких вертикальных линий, как вмоя проблема.Кроме того, эта проблема распространяется из-за горизонтального / вертикального веса.

Используемый код

Пример Python PWLF:

import pwlf
my_pwlf = pwlf.PiecewiseLinFit(x,y)
res = my_pwlf.fit(6)
xHat = np.linspace(min(x),max(x),num=10000)
yHat = my_pwlf.predict(xHat)

plt.figure()
plt.plot(x,y,"o")
plt.plot(xHat,yHat, "-")
plt.axis('equal')
plt.show()

При желании я также могу попытаться присоединить точки данных.

...