我有一張圖表:速度與汽車轉速的函數關係。實際圖形由四個子圖組成(汽車的四個齒輪各有一個)。我將這些子圖與for循環和一些if語句結合在一起。這個結果圖如下所示。如何使圖形與另一個圖形的頂點相切?
我需要添加一個與所有圖形頂部相切的圖形,如紅線。最後的結果是這樣的:
(它現在仍然沒有紅線,顯然...)
這些是切線會觸及圖中的座標:(17 ,5130.36),(28,3117.98),(39,2239.37),(51,1714.72)。
我有一張圖表:速度與汽車轉速的函數關係。實際圖形由四個子圖組成(汽車的四個齒輪各有一個)。我將這些子圖與for循環和一些if語句結合在一起。這個結果圖如下所示。如何使圖形與另一個圖形的頂點相切?
我需要添加一個與所有圖形頂部相切的圖形,如紅線。最後的結果是這樣的:
(它現在仍然沒有紅線,顯然...)
這些是切線會觸及圖中的座標:(17 ,5130.36),(28,3117.98),(39,2239.37),(51,1714.72)。
既然你已經知道了切點,
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可能會給出更好的結果。特別是,如果您不僅知道切點的位置,還知道切線斜率,則可以使用該信息對分段多項式插值施加約束。
您正在通過眼睛解決曲線問題,這對於一臺機器來說很難做到。如果選擇曲線的峯值,則可以使用多項式求解器查找紅色曲線? –
您也可以查找數據導數的劇烈變化以找到這些峯值? –
@Ben:我對matlab(高級數學)還沒有真正的經驗,但我仍然是一名學生.. :(我已經讀過關於matlabs的峯值函數,我是否可以通過使用峯值來創建該圖表?我已經對不太漂亮的東西感到滿意了,就像一個帶有三個扭結的圖,如果它仍然觸及所有的顛簸,那對我來說已經足夠了 – Bart