【问题标题】:Problems with hold in Matlab 2008aMatlab 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 说的,它认为它应该可以工作。
  • 绘制的点会太小,你考虑过吗?也许它在监视器中无法正确看到,您应该仔细观察。 ;)

标签: matlab figure


【解决方案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有助于更新每个循环中的情节,因此您可以一点一点地看到变化。

【讨论】:

  • 我尝试了您的建议,但没有帮助。我仍然只看到最后一张图。不过感谢您的建议!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多