2016-08-17 14 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を望むのはどうですか?私は2つの値の間の線を計算する関数を作ることができますが、これは一般的な問題だと思っていたので、そのような場合に関数が組み込まれている可能性があります。そこにはありますか?

+0

コードのサンプルを追加して、あなたが試したこと(達成したいこと)を正確に示すことができます。 –

答えて

3

何を意味することは、同様の方法で、CurveFitパッケージを使用することができフィッティング曲線である場合:そのあなたが線形でない場合

torque = a + b * rotation 

よう

a,b = linear_fit(rotation,torque) 

返すメソッド、およびB poly_fit、power_fit、またはあなたのデータを記述する関数を使うことができますが、トルクは回転の二乗に関係しているので、poly_fitまたはpower_fitのいずれかが必要です。

1

ポイント間を線形補間するには、 Dierckx, Interpolationsまたは ApproXDパッケージを使用できます。

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を使用して、の1つをという値で見つけることができます。

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])