Julia 旋转和力矩曲线

Julia rotation and torque curve

我知道我想怎么做,但不知道如何在 Julia 中实现。 所以我有电机 torque/rotation 曲线图。我可以将数据收集到数组中,比如

torque[0,10,12,15,10,0]
rotation[0,1000,2000,3000,4000,5000,6000]

也许这可以做得更好,但想法是当旋转为 1000 时输出为 10,当旋转为 2000 时输出为 12。或其他方式。就像如果我想要 12Nm,输出是 2000。 这很容易做。但是如果我想要 9Nm 或 13Nm 呢?我可以创建函数来计算两个值之间的线,但我认为这是常见问题,所以可能有针对此类情况的内置函数。那么有吗?

如果你的意思是曲线拟合,你可以使用 CurveFit 包,方法如下:

a,b = linear_fit(rotation,torque)

方法,其中 returns a 和 b 使得

torque = a + b * rotation

如果它不是线性的,你可以使用 poly_fit、power_fit 或任何描述你的数据的函数,但我记得扭矩与旋转平方有关,所以 poly_fit 或 power_fit应该是你需要的

要在点之间进行线性插值,您可以使用 Dierckx, InterpolationsApproXD 包。

using Dierckx
torque   = [0,10.,12,15,12,10,0]
rotation = [0,1000.,2000,3000,4000,5000,6000]
# k=1 corresponds to linear interpolation
f = Spline1D(rotation, torque, k=1) 

using PyPlot
xs = linspace(0,6000,100)
plot( xs, [f(x) for x in xs] )

如果你想在另一个方向插值,从扭矩到旋转, 这更有问题,因为有了这些数字, 该功能没有明确定义。 例如,10 对应于 10005000。 您可以使用 fzeros 找到 一个 值。

using Roots
function g(y)
  # Only consider values between 0 and 3000
  fzero( x -> f(x) - y, 0., 3000.)
end

ys = 0:15
ys = linspace(0,15,100)
plot( ys, [g(y) for y in ys] )