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)0NaN 出于某种原因?然后它会似乎没有被绘制。 就像@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 中的保持问题的主要内容,如果未能解决你的问题,请参考以下文章

在 Matlab 中使用蒙太奇创建图像数组时保持像素分辨率

很简单的matlab进行方差分析

matlab 2012b 的类是不是向后兼容?

工业设计MATLAB应用实战系列(101)-谈谈MATLAB在深沟球轴承的有限元分析中的应用

多边形地图中的边框颜色显示 MatLab

使用 R2013b MATLAB 版本时出现 SVM 错误