Как почистить график, а затем сохранить очищенные данные в графическом интерфейсе?

Я прочитал пару постов о том, как сохранить очищенные данные, однако, попробовав предложения по этим постам ( это, это, это, это и это), ни один из них, похоже, не работает. Одна из проблем, с которой я столкнулся при попытке использовать эти предложения, заключается в том, что программа выполняется до конца до очистки любых данных, и поэтому сохраненные данные представляют собой пустую матрицу.

Мои цели:

  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);

Может кто-нибудь показать простой пример, как это сделать? Я пытаюсь сделать это в графическом интерфейсе.

2 ответа

Решение

Добавление 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);

Я на самом деле только что ответил сегодня утром.

Ознакомьтесь с моим ответом на этот вопрос и запомните мои комментарии к моему ответу, возможно, я допустил ошибку в своем первоначальном решении.

сохранить пользовательский ввод из удобного GUI Matlab?

Надеюсь, это может помочь вам тоже!

Подводя итог, добавьте waitfor(gcf); output=varToSave (убедитесь, что varToSave не из дескриптора / объекта, который должен быть удален), где output - это результат, возвращаемый функцией GUI.

Другие вопросы по тегам