我有一个向量,空间上至少有两点,例如:
A = np.array([-1452.18133319 3285.44737438 -7075.49516676])
B = np.array([-1452.20175668 3285.29632734 -7075.49110863])
我想在曲线的离散点上找到向量的切线,g.g曲线的起点和终点。我知道如何在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)
但这些方法似乎都不能满足我的要求。
好的,我找到了对上面的“pv”稍加修改的解决方案(注意splev只对一维向量有效) 我最初在“tck,u=scipy.interpolate.splprep(data)”中遇到的一个问题是,它至少需要4个点才能工作(Matlab使用2个点)。我用了两点。在增加数据点之后,它可以按我的要求工作。
以下是完整性的解决方案:
切线是(如果使用相同的数据,则与Matlab结果匹配):
将
der=1
赋给splev以获得样条曲线的导数:相关问题 更多 >
编程相关推荐