当我试图在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]);
Run Code Online (Sandbox Code Playgroud)
但是这段代码绘制了一张凌乱的图表,类似于下图:
情节可能有什么问题?
Plot通常接受两个维度参数.如果提供了一个,那么元素将根据其索引进行绘制.
PLOT线性图.PLOT(X,Y)绘制矢量Y与矢量X的关系.如果X或Y是矩阵,则绘制矢量相对于矩阵的行或列,无论哪一行.如果X是标量而Y是矢量,则创建断开的线对象并在X处垂直绘制为离散点.
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]);
Run Code Online (Sandbox Code Playgroud)
这个解决方案明确地定义了x和y维度,因此不应该对图表产生这样的混淆,并且它将完全按照您希望的方式生成它.