2015-01-14 71 views
0

我有一張圖表:速度與汽車轉速的函數關係。實際圖形由四個子圖組成(汽車的四個齒輪各有一個)。我將這些子圖與for循環和一些if語句結合在一起。這個結果圖如下所示。如何使圖形與另一個圖形的頂點相切?

我需要添加一個與所有圖形頂部相切的圖形,如紅線。最後的結果是這樣的:

graph

(它現在仍然沒有紅線,顯然...)

這些是切線會觸及圖中的座標:(17 ,5130.36),(28,3117.98),(39,2239.37),(51,1714.72)。

+0

您正在通過眼睛解決曲線問題,這對於一臺機器來說很難做到。如果選擇曲線的峯值,則可以使用多項式求解器查找紅色曲線? –

+0

您也可以查找數據導數的劇烈變化以找到這些峯值? –

+0

@Ben:我對matlab(高級數學)還沒有真正的經驗,但我仍然是一名學生.. :(我已經讀過關於matlabs的峯值函數,我是否可以通過使用峯值來創建該圖表?我已經對不太漂亮的東西感到滿意了,就像一個帶有三個扭結的圖,如果它仍然觸及所有的顛簸,那對我來說已經足夠了 – Bart

回答

0

既然你已經知道了切點,

x = [17 28 39 51]; 
y = [5130.36 3117.98 2239.37 1714.72]; 
plot(x, y, 'b.') 

的解決方案是一個簡單的插值

xs = linspace(min(x), max(x), 100); 
ys = spline(x, y, xs); 
hold on 
plot(xs, ys, 'r') 

與結果:

我這裏使用Matlab的標準三次樣條插值;根據您的數據屬性,其他interpolation functions可能會給出更好的結果。特別是,如果您不僅知道切點的位置,還知道切線斜率,則可以使用該信息對分段多項式插值施加約束。

+0

是的!那就是訣竅。至少,當這些座標是真實的時候,它適用於這個特定的場合。關鍵是,我給出的那些座標源於早期的計算。如果我使用不同的變速箱從其他車輛中填充其他數據/變量,那麼在計算中它不起作用。但我想我可以在你的幫助下讓自己發生。謝謝! – Bart

+0

恐怕不可能在不知道更多細節的情況下提供更一般的答案。人們需要完整的底層數據,最好是爲一輛以上的汽車。 –

+1

對不起,我的意思是我想我可以通過你在帖子中給我的幫助讓自己發生。我看到我說這有點模棱兩可。再次感謝 – Bart

相關問題