为什么会发生这种情况......
使用plot(x(i),y)绘制100个单点(每次迭代一个),默认情况下不会显示它们。因此情节看起来是空的。
解决方案1:矢量化计算和直接绘图
我认为你打算画一条连续线。在这种情况下,不需要for循环,因为您可以直接在MATLAB中计算和绘制矢量。所以下面的代码可能就是你想要的:
x = linspace(0,2*pi,100);
y = sin(x);
plot(x,y);
请注意,y是一个向量和x,而y(n)对于所有sin(x(n))都等于n。如果您想绘制点本身,请在调用plot时使用LineSpec - 语法,如此1:
plot(x,y,'*');
1)其他类型的点也是可能的,请参阅上面的链接文档。
解决方案2:计算for循环中的值并在之后绘制
如果你想计算for循环中的值并在之后绘制它:预先分配所需的变量(在这种情况下为y),计算for循环中的值,最后用计算后只需一个命令。
x = linspace(0,2*pi,100);
y = zeros(size(x));
for i = 1:numel(x)
y(i) = sin(x(i));
end
plot(x,y);
解决方案3:在计算时动态更新绘图
如果你坚持在每次迭代中进行绘图,那么Solution 2中的前一个代码可以扩展如下:创建一个数字,添加一个空的'绘制它并存储其句柄。在for循环中计算值并将它们添加