想象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提供任何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应该等待多长时间才能更好地查看更新的图形。