关于绘图:Matlab 不会在 for 循环中添加标记线

Matlab doesn't add marker line in for loop

我只是想绘制一个函数。我使用标记,我希望标记与线连接。但是,当我尝试在 for 循环中绘图时,Matlab 不会在标记之间创建线条。当我将 plot 命令从 循环中取出时,它起作用了。

这是一个简单的例子:

1
2
3
4
5
6
7
8
9
10
11
y=0:10:100;

for j=1:1:11

x(1,j)=1/(y(1,j)+1);

plot(y(1,j),x(1,j),'-s','MarkerFaceColor','g','MarkerSize',6)

hold on;

end

这不起作用。

1
2
3
4
5
6
7
8
9
y=0:10:100;

for j=1:1:11

x(1,j)=1/(y(1,j)+1);

end

plot(y,x,'-s','MarkerFaceColor','g','MarkerSize',6)

这有效。

我想不通原因。


这是因为 plot 对于向量和标量的行为不同。

如果你给 plot 标量(例如 plot(2,3)),它会绘制点。但是,如果你给它向量(例如 plot([1 2 3], [1 4 9]) ,那么它会绘制点并在它们之间画一条线。
要仅绘制点,您可以使用绘图选项,例如 plot([1 2 3], [1 4 9],'o').

要在循环中生成值时绘制点和线,我建议创建一个临时数组以在循环时将点存储在其中并将它们绘制在外部。