我尝试使用以下命令使用现有值绘制 ROC曲线
plot(X1,Y1,'--rs',X2,Y2,'-*g');
其中X1
,Y1
,X2
和Y2
是大小相同的矩阵
但是,此命令生成的行是直接的。
如何使它们成为曲线。
由于 阿兹
答案 0 :(得分:2)
MATLAB默认使用直线近似在控制点之间绘制图形。如果需要,可以在点之间插值以生成更逼真的图形。尝试将interp1
与'spline'
选项一起使用,看看情况如何。因此,计算X1
和X2
的最小值和最大值,然后定义具有更精细粒度的最小值和最大值之间的点网格。完成此操作后,将其放入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个点。然后我按照我们讨论指定控制点(interp1
)的方式使用X1,Y1,X2,Y2
,然后指定我想要插入的值。我在插值后使用输出值并绘制曲线。