2

我已经阅读了几篇关于如何保存刷过数据的帖子,但是,在尝试对这些帖子(thisthisthisthisthis)的建议时,它们似乎都不起作用。我在尝试这些建议时遇到的一个问题是程序在刷任何数据之前一直运行到最后,因此保存的数据是一个空矩阵。

我的目标是:

  1. 刷数据,然后

  2. 保存刷过的数据。

这是我从这里尝试过的,但似乎没有用:

t=0:0.2:25; plot(t,sin(t),'.-');
brush on
hBrushLine = findall(gca,'tag','Brushing');
brushedData = get(hBrushLine, {'Xdata','Ydata'});
brushedIdx = ~isnan(brushedData{1});
brushedXData = brushedData{1}(brushedIdx);
brushedYData = brushedData{2}(brushedIdx);

有人可以举一个简单的例子来说明如何做到这一点吗?我正在尝试在 GUI 中执行此操作。

4

2 回答 2

1

添加pause之后brush on可以解决问题:

t=0:0.2:25; plot(t,sin(t),'.-');
brush on
pause
hBrushLine = findall(gca,'tag','Brushing');
brushedData = get(hBrushLine, {'Xdata','Ydata'});
brushedIdx = ~isnan(brushedData{1});
brushedXData = brushedData{1}(brushedIdx);
brushedYData = brushedData{2}(brushedIdx);
于 2013-06-26T20:27:38.263 回答
0

实际上我今天早上才回答。

查看我对这个问题的回答,并记住我对我的回答的评论,我可能在我原来的解决方案中犯了一个错误。

从合适的matlab GUI保存用户输入?

希望它也能帮助到你!

总结一下,添加一个 waitfor(gcf); output=varToSave(确保 varToSave 不是来自即将被删除的句柄/对象),其中 output 是从 GUI 函数返回的输出。

于 2013-06-26T16:18:25.937 回答