我想知道为什么这两个代码不会产生相同的情节?
代码1:
x=[2,5,7];
y=[10,4,3];
plot(x,y);
代码2:
x=[2,5,7];
y=[10,4,3];
for i=1:length(x)
xx=x(i);
yy=y(i);
plot(xx,yy);
end
EDITED:
如何使Code 2
的输出与Code 1
答案 0 :(得分:4)
您正在使用x
命令在向量中定义的y
和plot(x,y)
坐标绘制行。默认情况下,它表示plot(x,y,'-');
,表示您绘制一条线(-
)。
您正在绘制向量中存储的单个点(无线),因为您为每个点(plot
,xx
)调用了yy
您可以复制代码1中代码2中的效果,并进行以下更改:
plot(x,y,'.');
这迫使MATLAB仅绘制点而不是连接线
如果您想要点和,
plot(x,y,'-.');
有关更多详细信息,请查看plot
命令的文档。
%# If you know the number of elements, preallocate
%# else just initialize xx = []; and yy =[];
xx = zeros(100,1);
yy = zeros(100,1);
%# Get the data
for i = 1:length(xx)
xx(i) = getXSomehow();
yy(i) = getYSomehow();
end
%# Plot the data
plot(xx,yy);
答案 1 :(得分:3)
Jacob's answer解决了为什么这两段代码会给出不同的结果。在回答您关于在绘图时需要在循环中阅读x
和y
的评论时,这里有一个解决方案,可让您使用GET更新每个读取的值的绘图线SET命令:
hLine = plot(nan,nan,'-.'); %# Initialize a plot line (points aren't displayed
%# initially because they are NaN)
for i = 1:10 %# Loop 10 times
x = ...; %# Get your new x value somehow
y = ...; %# Get your new y value somehow
x = [get(hLine,'XData') x]; %# Append new x to existing x data of plot
y = [get(hLine,'YData') y]; %# Append new y to existing y data of plot
set(hLine,'XData',x,'YData',y); %# Update the plot line
drawnow; %# Force the plot to refresh
end