【问题标题】:Problems when plotting points in MATLAB在 MATLAB 中绘制点时的问题
【发布时间】:2015-11-04 04:59:23
【问题描述】:

我在 MATLAB 中尝试将两组点绘制到图表中时遇到了一些问题。我创建了两个分别代表组的矩阵,一组圆圈和另一组十字。结果应该如下图所示:

创建这两个组的代码是这样的:

circles = [1 1; 2 1; 2 2; 2 3; 2 4; 3 2; 3 3; 4 1; 4 2; 4 3];
crosses = [1 2; 1 3; 1 4; 2 5; 3 4; 3 5; 4 4; 5 1; 5 2; 5 3];

plot(circles, 'ro');
hold on
plot(crosses, 'b+');
hold off;
axis([0,6,0,6]);

但是这段代码绘制了一个凌乱的图表,类似于下图:

绘图可能有什么问题?

【问题讨论】:

  • 根据the documentation for plot,使用一个输入矩阵调用plot 会将整个矩阵绘制为y 值,其中x 值是数据点的linear index。如果您删除 axis 调用,您将在情节中看到这一点。

标签: matlab


【解决方案1】:

Plot 通常接受二维参数。如果提供了一个,则元素将根据其索引绘制。

PLOT 线性图。 PLOT(X,Y) 绘制向量 Y 与向量 X 的关系图。如果 X 或 Y 是矩阵, 然后将向量相对于矩阵的行或列绘制, 无论哪个排队。如果 X 是标量,Y 是向量,则断开连接 线对象被创建并绘制为垂直的离散点 十。

PLOT(Y) 绘制 Y 的列与其索引的关系。 如果 Y 是复数,则 PLOT(Y) 等价于 PLOT(real(Y),imag(Y))。 在 PLOT 的所有其他用途中,虚部都被忽略了。

各种线型、绘图符号和颜色可以通过 PLOT(X,Y,S) 其中 S 是由一个元素组成的字符串 来自以下 3 列中的任何或全部:

因此,由于您需要分别提供x 和y,您可以像这样轻松解决您的问题:

circles = [1 1; 2 1; 2 2; 2 3; 2 4; 3 2; 3 3; 4 1; 4 2; 4 3];
crosses = [1 2; 1 3; 1 4; 2 5; 3 4; 3 5; 4 4; 5 1; 5 2; 5 3];

plot(circles(:, 1), circles(:, 2), 'ro');
hold on
plot(crosses(:, 1), crosses(:, 2), 'b+');
hold off;
axis([0,6,0,6]);

此解决方案明确定义 x 和 y 维度,因此不应与绘图混淆,它会完全按照您的意愿生成。

【讨论】:

  • 很好的答案!谢谢!
  • 我很乐意提供帮助,没问题。
  • 只有一个问题:我正在使用前馈网络函数来使用 MLP 神经网络分离组。如何将除数线(网)与图形一起绘制?
  • @GabrielMachado 在您最初的问题得到回答后不要提问。如果这个答案有帮助,请接受它(就像你所做的那样),可能会支持它并保留它。用您的其他问题打开一个新问题。
猜你喜欢
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-27
  • 1970-01-01
  • 2018-03-26
  • 1970-01-01
相关资源
最近更新 更多