【问题标题】:How to plot a curved line in MATLAB using a set of points如何使用一组点在 MATLAB 中绘制曲线
【发布时间】:2015-01-18 23:50:18
【问题描述】:

我正在尝试使用以下命令使用现有值集绘制 ROC 曲线

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

其中X1,Y1,X2Y2 是具有相同大小的矩阵

但是,这个命令产生的线条是直的。

我怎样才能让它们变成曲线。

谢谢 阿齐兹

【问题讨论】:

  • plot 总是用直线连接数据。通常的做法是让数据点靠得很近,以至于你不会注意到
  • 我给你写了一个答案。您需要更多帮助吗?

标签: matlab graph curve linegraph roc


【解决方案1】:

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 个点。然后我使用interp1,就像我们谈到在哪里指定控制点 (X1,Y1,X2,Y2),然后指定我想要插值的值。我使用插值后的输出值绘制曲线。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多