Сглаживание линий с помощью Numpy / SciPy - PullRequest
2 голосов
/ 31 мая 2011

У меня есть строка, которая должна быть сглажена scipy.interpolate.splrep и scipy.interpolate.splev.

line = ((x1, y1), (x2, y2), ... (xn, yn))
tck = interpolate.splrep(x, y)

Мне нужно найти больше значений для моей x-координаты, которые должны быть расположены равномерно.

newx = numpy.XXX(x)
newy = interpolate.splev(newx, tck)

например. (1, 2, 4, 3) -> (1, 1.5, 2, 2.5, 3, 3.5, 4, 3.5, 3)

Есть ли "простой" способ добиться этого в Numpy / SciPy?

1 Ответ

3 голосов
/ 31 мая 2011

Вы можете сделать что-то вроде этого:

import scipy.interpolate as interp
z = arange(0,4)
x = np.array([1,2,4,3])
f = interp.interp1d(z, x)
newx = f(np.linspace(z[0],z[-1],7))

, что должно дать вам

In [40]: print z
[0 1 2 3]

In [41]: print x
[1 2 4 3]

In [42]: print newx
[ 1.   1.5  2.   3.   4.   3.5  3. ]

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

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