如何在for循环中更新xtick和xticklabel?

问题描述 投票:0回答:1

想象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  
matlab for-loop plot matlab-figure
1个回答
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应该等待多长时间才能更好地查看更新的图形。

© www.soinside.com 2019 - 2024. All rights reserved.