Matlab 2008a 中的保持问题
Posted
技术标签:
【中文标题】Matlab 2008a 中的保持问题【英文标题】:Problems with hold in Matlab 2008a 【发布时间】:2013-05-30 17:23:46 【问题描述】:我试图在 Matlab 中的一个循环内将多个图形绘制到一个图形上,而 hold
似乎不起作用。我不能发布图像,或者我会显示输出,但只有循环中的最后一个图形和循环外的图形被绘制出来。
我尝试将hold
放在for
循环的内部和外部,没有任何区别。有人可以指出我做错了什么或提供更好的方法建议吗?我正在使用 Matlab r2008a。
谢谢!
figure
colors = ['b','r','g','m'];
hold on
for det = 1:4
plot(tvals,DOxy(:,det),colors(det));
end
plot(tvals,mOx,'k')
xlabel 'Time (s)'
ylabel '\Delta Oxy (\muM)'
legend('Probe 1','Probe 2', 'Probe 3','Probe 4')
hold off
【问题讨论】:
也许DOxy(:,1:3)
是 0
或 NaN
出于某种原因?然后它会似乎没有被绘制。
就像@Schorsch 说的,它认为它应该可以工作。
绘制的点会太小,你考虑过吗?也许它在监视器中无法正确看到,您应该仔细观察。 ;)
【参考方案1】:
您正确地使用了保持:
x = -pi:.1:pi;
figure
colors = ['b','r','g','m'];
hold on
for det = 1:4
plot(x,det*sin(x),colors(det));
end
plot(x,cos(x));
因此,您的代码中可能存在错误。
【讨论】:
你在 R2008a 中运行过这个吗? R2007b 和 R2010a,所以我想它也应该在 R2008a 中工作。 是的 - 我之前犯了一个错误,并且绘制了四次完全相同的图表。hold
正在工作。谢谢!【参考方案2】:
我会这样做:
figure;
colors = ['b','r','g','m'];
for det = 1:4
plot(tvals,DOxy(:,det),colors(det));hold on;drawnow
end
plot(tvals,mOx,'k');
xlabel('Time (s)');ylabel('\Delta Oxy (\muM)');
legend('Probe 1','Probe 2', 'Probe 3','Probe 4');
你不需要拖延。 而且drawow有助于更新每个循环中的情节,因此您可以一点一点地看到变化。
【讨论】:
我尝试了您的建议,但没有帮助。我仍然只看到最后一张图。不过感谢您的建议!以上是关于Matlab 2008a 中的保持问题的主要内容,如果未能解决你的问题,请参考以下文章