2014-11-20 20 views
-1

我試圖使用現有的一組值的使用下面的命令來繪製ROC曲線的繪製曲線在MATLAB如何使用一組點

plot(X1,Y1,'--rs',X2,Y2,'-*g'); 

X1Y1X2Y2是具有相同大小的矩陣

但是,此命令產生的直線是直線。

我怎樣才能讓他們曲線。

感謝 阿齊茲

+1

'plot'總是用直線連接數據。通常的安全措施是讓數據點如此接近以至於你不會注意到 – 2014-11-20 22:57:39

+0

我爲你寫了一個答案。你需要更多幫助嗎? – rayryeng 2014-11-21 17:29:56

回答

2

MATLAB默認使用近似直線繪製在控制點之間的曲線圖。如果你願意,你可以在點之間插入插入以產生更真實的圖。嘗試使用interp1'spline'選項,並查看結果如何。因此,計算出X1X2的最小值和最大值,然後在最小和最大粒度之間定義一個網格點。一旦你這樣做,把它扔進interp1並繪製你的曲線。喜歡的東西:

%// Find dynamic range of domain for both Xs 
minX1 = min(X1); 
maxX1 = max(X1); 
minX2 = min(X2); 
maxX2 = max(X2); 

%// Generate grid of points for both Xs 
x1Vals = linspace(minX1, maxX1, 100); 
x2Vals = linspace(minX2, maxX2, 100); 

%// Interpolate the curves 
y1Vals = interp1(X1, Y1, x1Vals, 'spline'); 
y2Vals = interp1(X2, Y2, x2Vals, 'spline'); 

%// Plot the results 
plot(x1Vals,y1Vals,'--rs',x2Vals,y2Vals,'-*g'); 

linspace從一端到另一端產生點的網格,並予指定這些點100。然後我們用我們討論的指定控制點(X1,Y1,X2,Y2)的方式使用interp1,然後指定我想插入的值。我使用插值後的輸出值並繪製曲線。