【问题标题】:MATLAB for loop plotsMATLAB 用于循环图
【发布时间】:2011-09-07 06:51:17
【问题描述】:

我有一个关于在 MATlab 中制作简单绘图的快速问题。我以前做过这个,但由于某种原因它已经停止工作,我想要的图表不再出现。

我不确定需要多少信息才能回答这个问题,所以如果我应该添加更多信息,请告诉我。

我有一个 ODE 系统,并在循环中使用以下参数作为变量之一。

A4bar = NaN;
for eta_p = 0.0:.1:7;
A3bar=x(size(t,1),3);
A4bar= [A4bar;A3bar];
hold on
plot(eta_p,A4bar,'-k','linewidth',1);

当我使用上面的代码时,我的图表出现了一堆未连接的绘图点。

当我使用过去有效的原始代码时,我使用了这个。

A4bar = NaN;
for eta_p = 0.0:.1:7;
A3bar=x(size(t,1),3);
A4bar= [A4bar;A3bar];
place_holder_eta_p = 0:.1:7.1;
hold on
plot(place_holder_eta_p,A4bar,'-k','linewidth',1);

我的原始代码得到的错误是向量不相等。我尝试将 place_holder_eta_p 设置为与 eta_p 匹配,但没有成功。它曾经只使用上面的代码,所以我不确定发生了什么。

有什么想法或建议吗?也许更重要的是,如果我应该提供任何其他信息,请告诉我。

谢谢大家。

【问题讨论】:

  • 请发布一个更完整的示例 - 至少包括整个 for 循环直到“结束”。
  • 您期望在第一个示例中发生什么但没有发生?在第二个示例中,正如您所说,place_holder_eta_p 的长度不同,那您为什么要这样做?

标签: matlab graph for-loop plot


【解决方案1】:

我怀疑你不需要 for 循环来做你想做的事。事实上,这是因为您将每个单独的点绘制为自己的图,所以您在图表中获得了未连接的点。在任何情况下,您都没有展示如何在循环中使用不断变化的变量 eta_p

你的代码的基本结构应该是这样的:

eta_p = 0:0.1:7;
N     = length(eta_p);
A4bar = Zeros(1, N);       % same length as eta_p
% set up your other variables

% calculate the values in A4bar
% it might look like
% for i = 1:length(eta_p)
%     A4bar(i) = interesting_function(eta_p(i), A3bar, x, t);
% end

plot(eta_p, A4bar, '-k', 'linewidth', 1);

我不知道如何设置您的其他变量 A3barxt,而且我无法告诉您在中间部分需要什么来计算 A4bar 的值而没有任何附加信息。

需要注意的重要事项是

  1. eta_pA4bar 的大小都是 [1 N]plot 命令所必需的)
  2. plot 命令发生一次任何循环之外,而不是在它内部,并且在您计算了 所有A4bar 的值之后。

【讨论】:

  • +1。请注意,如果您的 for 循环非常慢,并且您想查看计算进度(请参阅一个接一个的点),您可以在循环中使用 plot。只需从 eta_PA4bar 两个 [1 N] 的 NaN 数组开始,然后逐步用数据填充它们。确保为您的图形使用hold allhold on,然后plot 总是替换之前的绘图。您还需要在循环内绘图后添加drawnow 才能真正看到任何东西......
  • 除了@Jonas 评论之外,您实际上可以更新现有绘图,而不是使用set(h, 'XDataSource', 'eta_p', 'YDataSource', 'A4bar'); 替换它,然后在更新A4bar 时调用refreshdata(h);。在这种情况下,变量h = plot(eta_p, A4bar, '-k', 'linewidth', 1); 应该在开始计算A4bar 的循环之前调用。如果 N 非常大(尽管在这种情况下不会太大),这比制作新图要快。
  • 非常感谢大家的帮助,尤其是@Brian L。非常感谢您花时间帮助我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-12
  • 2016-05-15
  • 2016-08-16
  • 2015-01-11
  • 1970-01-01
  • 2011-06-13
相关资源
最近更新 更多