У меня есть данные, которые берутся в разное время и немного в разных местах, поэтому высокие и низкие точки образуют «канал».Я пытаюсь найти среднюю линию этих точек, так что в основном то, что находится в середине "канала"
Используя простое полиномиальное соответствие 5-го порядка (numpy.polyfit(x,y,5)
), я получаю следующий результат, гдеаппроксимация идет прямо по середине «канала», образованного двумя точками данных (поэтому красная линия попала в середину синих точек.
Единственное единственноепроблема в том, что я исключаю довольно важную точку данных из этой подгонки поли, поскольку она все портит (это поток жидкости в трубе с радиусом = 1. Я исключаю точку скольжения ,что было бы (1,0)
, и действительно испортило бы подгонку).
Чтобы попытаться отсортировать это, я попытался использовать сплайн-подгонку (scipy.interpolate.splrep
). Однако, поиграв с этим некоторое время,кажется, что он заботится только о верхних значениях «канала» вплоть до x = 0,8:
^ Это без каких-либо изменений настроек (поэтому просто splrep(x,y)
)
^ Здесь указываются некоторые узлы (splrep(x,y,t=knots
)
^ Это указывает на гладкость (splrep(x,y,s=5)
)
Добавление «точки скольжения» к данным дает желаемый эффект (т.е.сопоставьте данные о высокой скорости так же, но все еще сопоставьте пограничный слой со стеной), но у нас все еще есть другие проблемы:
Это нормальное поведение для сплайнафункция представления?Как мне сделать так, чтобы это учитывало данные как верхней, так и нижней точек?
Примечание: «Точки файла» на рисунках - это просто сплайн, оцениваемый в определенных точках.Не стесняйтесь игнорировать это.