расщепление только с учетом верхних точек? - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть данные, которые берутся в разное время и немного в разных местах, поэтому высокие и низкие точки образуют «канал».Я пытаюсь найти среднюю линию этих точек, так что в основном то, что находится в середине "канала"

Используя простое полиномиальное соответствие 5-го порядка (numpy.polyfit(x,y,5)), я получаю следующий результат, гдеаппроксимация идет прямо по середине «канала», образованного двумя точками данных (поэтому красная линия попала в середину синих точек. Polyfit attempt

Единственное единственноепроблема в том, что я исключаю довольно важную точку данных из этой подгонки поли, поскольку она все портит (это поток жидкости в трубе с радиусом = 1. Я исключаю точку скольжения ,что было бы (1,0), и действительно испортило бы подгонку).

Чтобы попытаться отсортировать это, я попытался использовать сплайн-подгонку (scipy.interpolate.splrep). Однако, поиграв с этим некоторое время,кажется, что он заботится только о верхних значениях «канала» вплоть до x = 0,8: spline fit 1

^ Это без каких-либо изменений настроек (поэтому просто splrep(x,y))spline fit 2

^ Здесь указываются некоторые узлы (splrep(x,y,t=knots) spline fit 3

^ Это указывает на гладкость (splrep(x,y,s=5))

Добавление «точки скольжения» к данным дает желаемый эффект (т.е.сопоставьте данные о высокой скорости так же, но все еще сопоставьте пограничный слой со стеной), но у нас все еще есть другие проблемы: spline fit with no-slip point

Это нормальное поведение для сплайнафункция представления?Как мне сделать так, чтобы это учитывало данные как верхней, так и нижней точек?

Примечание: «Точки файла» на рисунках - это просто сплайн, оцениваемый в определенных точках.Не стесняйтесь игнорировать это.

1 Ответ

0 голосов
/ 30 сентября 2018

Разобрался.У меня не было моих данных в наименьшем -> величайшем порядке.Функция splrep учитывала только половину данных из-за порядка, в котором она находилась, когда я импортировал ее из csv.

Таким образом, данные были организованы как:

          r          V
0   0.92429  131.53931
1   0.88794  138.36454
2   0.83497  143.48595
3   0.75709  145.97411
4   0.69744  147.68532
5   0.63446  149.08677
6   0.56649  149.71351
7   0.51182  152.04439
8   0.45214  152.98041
9   0.38584  153.91706
10  0.25822  156.72013
11  0.13891  160.14254
12  0.01124  160.30995
13  0.11973  161.09784
14  0.26564  160.64686
15  0.36184  158.64068
16  0.42159  155.70073
17  0.49953  154.93309
18  0.55924  153.54353
19  0.61233  151.99828
20  0.67537  149.98889
21  0.74504  148.13517
22  0.80649  142.71477
23  0.88122  136.05535
0   1.00000    0.00000

Так что это было только с учетом данных точек 0-> 12.Как только я изменил это, полученный сплайн затем был применен ко всем данным:

enter image description here

Подгонка все еще грубая, но теперь у меня по крайней мере естьначальная точка.

Редактировать: Вот результат после некоторого сглаживания.Обратите внимание, что функция сплайна фактически проходит между точками:

Smoothed spline

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...