使用UIControl在matlab中控制多个子图的x范围

时间:2013-01-16 03:09:14

标签: matlab user-interface animation

我试图创建一个滑动窗口(带滑块)来查看多个子图,每个子图都是一个很长的时间序列。

S=['set(gca,''xlim'',get(gcbo,''value'')+[0 ' num2str(chunkDuration) '])'];
h=uicontrol('style','slider','units','normalized','position',Newpos,...
    'callback',S,'min',0,'max',xmax-chunkDuration);

如上所述,这只会导致底部情节移动。我理解这是因为我设置了gca。但是,将gcf更改为gca会有所帮助,因为这会尝试设置数字的xlim而不是其子代。

当我尝试

 kids = get(gcf,'Children')
 S=['set(kids,''xlim'',get(gcbo,''value'')+[0 ' num2str(chunkDuration) '])'];

我收到错误:

 ??? Undefined function or variable 'kids'.
 ??? Error while evaluating uicontrol Callback

那么,为什么不进行上述工作呢?

即使在实质性change in approach之后,问题仍然存在。

1 个答案:

答案 0 :(得分:1)

在代码中的某处,您尝试使用名为subplot_handles的变量。出现错误是因为在您尝试使用此变量时未定义此变量。

更新

是否有理由将set命令保存为String?我怀疑它完全不需要。

创建子图时,尝试将手柄存储到子图对象创建的轴上。

ax(1) = subplot(311);
ax(2) = subplot(312);
ax(3) = subplot(313);

稍后,您可以使用以下方式设置所有subplot的限制:

set(ax, 'XLim', get(gcbo,'value') + [0  num2str(chunkDuration)] );