Nad*_*der 0 python numpy vector scipy
我有一个在空间中最少有两个点的向量,例如:
A = np.array([-1452.18133319 3285.44737438 -7075.49516676])
B = np.array([-1452.20175668 3285.29632734 -7075.49110863])
Run Code Online (Sandbox Code Playgroud)
我想在沿着曲线的离散点处找到矢量的切线,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
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我尝试使用numpy和scipy使用多种方法找到解决方案,例如
tck, u= scipy.interpolate.splprep(data)
Run Code Online (Sandbox Code Playgroud)
但是没有一种方法能满足我的要求.
给der=1splev以获取样条的导数:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5889 次 |
| 最近记录: |