найти касательный вектор в точке для дискретных точек данных

У меня есть вектор с минусом двух точек в пространстве, например:

A = np.array([-1452.18133319 3285.44737438 -7075.49516676]) B = np.array([-1452.20175668 3285.29632734 -7075.49110863]) 

Я хочу найти касательную вектора в дискретных точках вдоль кривой, gg – начало и конец кривой. Я знаю, как это сделать в Matlab, но я хочу сделать это на Python. Это код в Matlab:

 A = [-1452.18133319 3285.44737438 -7075.49516676]; B = [-1452.20175668 3285.29632734 -7075.49110863]; points = [A; B]; distance = [0.; 0.1667]; pp = interp1(distance, points,'pchip','pp'); [breaks,coefs,l,k,d] = unmkpp(pp); dpp = mkpp(breaks,repmat(k-1:-1:1,d*l,1).*coefs(:,1:k-1),d); ntangent=zeros(length(distance),3); for j=1:length(distance) ntangent(j,:) = ppval(dpp, distance(j)); end %The solution would be at beginning and end: %ntangent = % -0.1225 -0.9061 0.0243 % -0.1225 -0.9061 0.0243 

Есть идеи? Я попытался найти решение, используя numpy и scipy, используя несколько методов, например

 tck, u= scipy.interpolate.splprep(data) 

но ни один из методов не удовлетворяет то, что я хочу.

2 Solutions collect form web for “найти касательный вектор в точке для дискретных точек данных”

Приведите der=1 в splev, чтобы получить производную от сплайна:

 from scipy import interpolate import numpy as np t=np.linspace(0,1,200) x=np.cos(5*t) y=np.sin(7*t) tck, u = interpolate.splprep([x,y]) ti = np.linspace(0, 1, 200) dxdt, dydt = interpolate.splev(ti,tck,der=1) 

ОК, я нашел решение, которое представляет собой небольшую модификацию «pv» выше (обратите внимание, что splev работает только для 1D векторов). Одна из проблем, с которой я первоначально сталкивался с «tck, u = scipy.interpolate.splprep (data)», заключается в том, что она требуется минимум 4 балла для работы (Matlab работает с двумя точками). Я использовал два очка. После увеличения точек данных он работает, как я хочу.

Вот решение для полноты:

 import numpy as np import matplotlib.pyplot as plt from scipy import interpolate data = np.array([[-1452.18133319 , 3285.44737438, -7075.49516676], [-1452.20175668 , 3285.29632734, -7075.49110863], [-1452.32645025 , 3284.37412457, -7075.46633213], [-1452.38226151 , 3283.96135828, -7075.45524248]]) distance=np.array([0., 0.15247556, 1.0834, 1.50007]) data = data.T tck,u = interpolate.splprep(data, u=distance, s=0) yderv = interpolate.splev(u,tck,der=1) 

и касательные (которые соответствуют результатам Matlab, если используются одни и те же данные):

 (-0.13394599723751408, -0.99063114953803189, 0.026614957159932656) (-0.13394598523149195, -0.99063115868512985, 0.026614950816003666) (-0.13394595055068903, -0.99063117647357712, 0.026614941718878599) (-0.13394595652952143, -0.9906311632471152, 0.026614954146007865) 
  • Wrap std :: вектор std :: векторов, C ++ SWIG Python
  • Граница решения границы matplotlib
  • Python: дифференцирование между векторами строк и столбцов
  • Адресация векторных элементов в C / openCL
  • Как преобразовать трехмерный вектор в поворот Эйлера в программном обеспечении, таком как майя, используя python
  • boost.python выставить функцию, которая возвращает вектор <MyClass>
  • строка 60, в make_tuple return tuple (l) TypeError: iter () возвращен неитератор типа 'Vector'
  • numpy: syntax / idiom для массива (n,) для массива (n, 1)?
  •  
    Interesting Posts for Van-Lav

    Можете ли вы «потопить» изображения в ffmpeg, чтобы создать видео, а не сохранять их на диск?

    Быстрый способ удалить несколько элементов из списка / очереди

    Создание пустого списка в Python

    Невозможно импортировать имя _uuid_generate_random в heroku django

    CoreLocation AttributeError

    Python: List append () in для цикла

    Передача команд оболочки двойной кавычки в python на subprocess.Popen ()?

    Python: сложные списки списков, где один var зависит от другого (x для x в t для t в тестах)

    django-admin.py startproject mysite не работает на Windows 7

    Анализ вывода GPS-приемника через регулярное выражение в Python

    Отладка: внутренняя ошибка текущей транзакции прерывается, команды игнорируются до конца блока транзакции

    Вопрос о приоритете правил с grako

    HTTPError 403 (Запрещено) с Django и python-social-auth, подключающимся к Google с помощью OAuth2

    В чем разница между списком, словарем и кортежем в Python?

    Решение 3d-линейного уравнения без петли

    Python - лучший язык программирования в мире.