В Matlab можно ли завершить скрипт, но сохранить все его внутренние переменные в рабочее пространство?

Я запускаю скрипт, но он занимает слишком много времени, поэтому я хочу закончить скрипт. Однако он рассчитал много данных, которые я бы в идеале не хотел выбрасывать. Есть ли альтернатива ctrl-C с помощью которой вы сохраняете внутренние функциональные переменные в рабочей области?

В идеале я ищу ярлык для клавиатуры Matlab, например ctrl-C , но если это действительно невозможно сделать, возможно, есть способ сделать это в скрипте моей функции. Любая идея, как позволить скрипту реагировать на ctrl-C , или, может быть, элемент GUI, который я могу отменить, а затем я сохраняю переменные через свой скрипт?

Некоторые подобные вопросы я нашел, но которые не отвечают на мой вопрос:

закрыть / пауза

прекратить

Другой вопрос, похожий ответ:

dbstop

РЕДАКТИРОВАТЬ:

Этот вопрос отличается от того, что проблема, с которой сталкивается айзер, отличается: они хотят знать, где ошибка, что в моем случае говорит Matlab. Я просто хочу сохранить все данные из рабочей памяти, когда это произойдет.

MATLAB версии 2016a и более поздние версии

Если вы используете версии Matlab после 2016а, на самом деле появляется кнопка паузы, которая появляется при запуске скрипта (как описано @pedre). Это позволяет приостанавливать сценарий, проверять переменные и затем возобновлять его.

Не забудьте проверить следующий раздел, так как это может быть удобно.

Старые версии MATLAB

На самом деле трюк заключается в использовании dbstop if error .

Сначала используйте это, затем запустите свой скрипт. Как только вы введете ошибку (например, с помощью Ctrl + C ), у вас будет возможность проверить / сохранить рабочие области вручную.

Вы не сможете возобновить выполнение сценария.

Вам просто нужно щелкнуть внутри своего скрипта, чтобы открыть страницу Editor , а затем нажать паузу и увидеть все статические значения.

введите описание изображения здесь

Коллега показал мне альтернативный способ включить это в мою функцию, waitbar команду save() к отмене waitbar так:

 %appoint emergency file location emergencysave = char(inputdlg({'fill in here:'}, 'windowtitle', 1, 'c:\defaultstringhere.mat')); %or just emergencysave = 'c:\emergencysave.mat'; %create some GUI element you can cancel times = 10; wbinfo = struct('curlength', {0.0}); wb = waitbar(wbinfo.curlength); wbinfo.wb = wb; %attach save() to cancelling anyimportantvariable = []; for i=1:times anyimportantvariable = [anyimportantvariable, i^2]; wbinfo.curlength = i/times; try waitbar(wbinfo.curlength, wb) catch save(emergencysave, 'anyimportantvariable'); return; end 
Interesting Posts

Как получить доступ к папке данных / данных на устройстве Android?

Как получить временную отметку точности тика в .NET / C #?

32-разрядная совместимость с 32-разрядными версиями по сравнению с 64-разрядной

Папка «Мои документы» для нового местоположения в Windows 7

Есть ли SASS.js? Что-то вроде LESS.js?

Файловые операции в Android NDK

Как вызвать .NET Webservice с Android с помощью KSOAP2?

Печать шестнадцатеричных символов в C

Как использовать намерение для выбора файлового браузера для выбора файла

Возможно ли обновить один UITableViewCell в UITableView?

Программное обеспечение подавления помех в реальном времени и эхоподавления для Windows 7

Как установить плагин Xcode для автоматического форматирования кода

Создание файлов манифеста для бесплатного COM-входа

Для передачи файлов ftp работает лучше, чем http?

Java 8 группировка с использованием пользовательского коллектора?

Давайте будем гением компьютера.