2016-08-17 107 views
1

我知道這個想法是如何做到的,但不知道如何在朱莉婭做這件事。 所以我有馬達扭矩/旋轉曲線圖。我可以收集數據陣列,像朱莉婭旋轉和扭矩曲線

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

也許這是可以做的更好,但這個想法是當轉速爲1000的輸出爲10,當轉速爲2000的輸出爲12或者其他方式。就像我想要12Nm的輸出是2000. 這很容易做到。但是如果我想要9Nm或13Nm,那又怎麼樣?我可以使函數來計算兩個值之間的界限,但我認爲這是常見問題,所以也許在這種情況下有函數構建。那麼在那裏?

+0

添加代碼示例以向我們展示您一直在嘗試的內容(以及您想要實現的內容)將是非常好的。 –

回答

3

如果你的意思是曲線擬合可以使用CurveFit包,用類似的方法:

a,b = linear_fit(rotation,torque) 

方法,它返回a和b,使

torque = a + b * rotation 

如果它不是線性的你可以使用poly_fit,power_fit或描述您數據的任何函數,但正如我記得扭矩與旋轉平方相關,所以poly_fit或power_fit應該是您所需要的。

1

要在點之間線性插值,可以使用 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])