Выполнить скрипт, но не трогать рабочую область в Matlab - PullRequest
0 голосов
/ 15 мая 2018

Могу ли я выполнить скрипт, но сделать так, чтобы он не касался текущих переменных рабочей области? То есть превратить скрипт в функцию?

Также было бы хорошо иметь доступ к переменным этого скрипта после запуска.

Я пытался

evalin('myworkspace', 'myscript')

но это не удалось.

Я пытался

evalin('caller', 'myscript')

но он изменил переменные.

Можно ли выполнить?

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Тривиальный способ сделать это без изменения самого скрипта:

save
myscript
% ... examine variables
clear
load

save сохраняет текущее рабочее пространство в MAT-файл с именем "matlab.mat".».Вы можете дать ему другое имя, если хотите.load загружает его снова.Если вы указали другое имя для save, присвойте то же имя load.

0 голосов
/ 15 мая 2018

Если у вас есть набор инструментов для параллельных вычислений, вы можете сделать это, отправив скрипт в локальный кластер.(Просто чтобы подчеркнуть, ваш локальный кластер - это ваш собственный компьютер.)

Например, если у вас есть скрипт SO.m со строкой

a = randn;

, вы можете отправить и подождать, используя

job = batch('SO', 'Profile', 'local');
wait(job);

После завершения работы вы можете загрузить переменные, используя

M = load(job);

, тогда все переменные будут полями M.

>> M.a

ans =

    0.4010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...