Есть ли чистый питонический способ запроса нескольких точек на двумерном сплайне в основе B-сплина?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Есть ли чистый питонический способ запроса нескольких точек на двумерном сплайне в основе B-сплина?

Сообщение Anonymous »

Мне нужно эффективно оценить двумерный сплайн на основе B-сплайна. Я уже рассчитал положения узла и коэффициенты сплайна (независимо от классов/методов Scipy, таких как Rectbivariatespline, которые рассчитывают их для вас). Следовательно, я хочу только оценить функцию сплайна, используя узлы и коэффициенты, которые я предоставляю. Эта функция сплана должна быть оценена в облаке точек, а не сеткой, сформированной из декартового продукта. Я наткнулся на следующий запрос Stackoverflow, который объясняет, как это сделать: запрос нескольких точек на двумерном сплайне в основе B-сплайна.
Для удобства я воспроизводил код, который делает то, что я хочу: < /p>
from scipy.interpolate import dfitpack

# Meaning of the different variables:
# x: x coordinates where to evaluate the bivariate spline function
# y: y coordinates where to evaluate the bivariate spline function
# xknots: the positions of the knots in the x direction
# yknots: the positions of the knots in the y direction
# coefs: spline coefficients in the bivariate spline function
# result: the bivariate spline function evaluated at x, y
#
# NOTE: I'm assuming x, y, xknots, yknots, and coefs have already been
# calculated. In the present example, x and y may be multi-
# dimentional arrays, but need to be transformed into a 1D array.
# coefs is a 2D array given that we are dealing with a bivariate
# spline function.

x = x.ravel(order="C")
y = y.ravel(order="C")
# NOTE: specify the order parameter to avoid leaving this to chance

# NOTE: access low-level fortran routine to carry out calculations (this
# runs much faster than any python equivalent, but the documentation
# is only available in the fortran routine or online)
result, ier = dfitpack.bispeu(
yknots, xknots, coefs.ravel(order="C"), degree, degree, y, x
)

if not ier == 0:
raise ValueError("Error in spline2grid. Error code from bispeu: %s" % ier)
< /code>
Тем не менее, доступ к низкоуровненному рутинному Bispeu непосредственно не работает в более поздних версиях Scipy. Я получаю понижение в Scipy -1.14.1, и программа не удается в более поздних версиях. Поэтому я прибегал к этому вместо этого: < /p>
from scipy.interpolate import BivariateSpline

# This example uses the same naming convention and assumptions as
# in the previous code snippet.

# set up BivariateSpline object (to access bispeu indirectly)
spline_object = BivariateSpline() # is this legal ?
spline_object.degrees = (degree, degree)
spline_object.tck = (yknots, xknots, coefs.ravel(order="C"))
x = x.ravel(order="C")
y = y.ravel(order="C")
result = spline_object(y, x, grid=False)
< /code>
Приведенное выше решение работает, но мне интересно, является ли оно законным или есть лучший способ сделать это. Например, документация по состоянию Bivariatespline «Этот класс предназначен для подклассов, а не создается напрямую». Однако, если я попытаюсь использовать подкласс, такой как rectbivariatespline, он обычно хочет пересчитать узлы и коэффициенты (что является пустой тратой времени и не соответствует тому, что я хочу), а также может попытаться заставить меня рассчитать сплайну на картезианской сетке, а не в облаке.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... ate-spline
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Есть ли чистый питонический способ запроса нескольких точек на двумерном сплайне в основе B-сплина?
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Есть ли чистый питонический способ запроса нескольких точек на двумерном сплайне в основе B-сплина? [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Запрос точек на 3D сплайне с определенными параметрическими значениями в Python
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Рисуя B-сплина
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Привлечение B-сплина [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»