【问题标题】:How to update xtick and xticklabel in for loop?如何在 for 循环中更新 xtick 和 xticklabel?
【发布时间】:2020-03-25 09:11:08
【问题描述】:

假设 a = 1:1000, b = sin(a),我们想用 segment_length = 100 分割这个数据,只绘制每个段,并在 for 循环中用 segment_length/2 移动段。我想在 for 循环中绘制一个图,其中 xtick 和 xticklabel 在每个循环中更新:第一个循环是 1-100,第二个是 51-150,第三个是 101-200,依此类推。在下面的代码中,我只是在每个循环中绘制了感兴趣的数据,但 xtick 和 xticklabel 不会改变。

a = 1:1000;
b = sin(a);
segment_length = 100;
shift = segment_length/2;
seg_no = 1000/shift;
start = 1;
en = segment_length; 
for i = 1 : seg_no-1 
    seg = b(start : en)
    plot(seg)
    start = shift + start 
    en = shift + en
end  

【问题讨论】:

  • 使用plot(x,y) 语法。

标签: matlab for-loop plot matlab-figure


【解决方案1】:

请注意,您没有向 Matlab 提供任何 x 坐标信息。因此,它必须假定您的索引始终从 1 开始。这就是它们不会改变的原因。 这是解决方案

a = 1:1000;
b = sin(a);
segment_length = 100;
shift = segment_length/2;
seg_no = 1000/shift;
start = 1;
en = segment_length; 
for i = 1 : seg_no-1 
    idx = start:en;
    seg = b(idx);
    plot(idx,seg)
    start = shift + start; 
    en = shift + en;

    drawnow % force matlab to draw/update the figure
    pause(0.1) % / s | pause for 0.1 seconds
end  

请注意,我使用命令 drawnow 强制 Matlab 在继续之前更新图形。我还添加了pause() 来定义 Matlab 应该等待多长时间才能更好地看到更新的图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-20
    • 2020-03-17
    • 2022-01-10
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多