сохранить файл кода MATLAB вместе с результатами в одной папке?

Я обрабатываю набор данных и сталкиваюсь с проблемой: хотя я xls записываю все соответствующие выходные переменные в большой файл Excel с отметкой времени, я не сохраняю код, который фактически сгенерировал этот результат. Поэтому, если я попытаюсь воссоздать определенный набор результатов, я не смогу сделать это, не полагаясь на память (что, очевидно, не является хорошим планом). Я хотел бы знать, есть ли команды, которые помогут мне сохранить m-файлы, используемые для создания выходного файла Excel, а также сам файл Excel, в папке, которую я могу назвать и поставить отметку времени, чтобы я не т должны сделать это вручную.

В моем идеальном мире я бы запустил файл основного кода, который вызывает 4 или 5 m-файлов других функций, затем все эти m-файлы были бы сохранены вместе с выводом Excel в папку с именами results_YYYYMMDDTIME. Существует ли этот функционал? Я не могу найти его.


person dustynrobots    schedule 23.09.2013    source источник


Ответы (1)


Встроенного такого функционала нет.

Вы можете построить дерево зависимостей вашей основной функции, используя depfun с mfilename. depfun(mfilename()) вернет список всех функций/m-файлов, которые вызываются текущим исполняемым m-файлом. Это будет включать все файлы, которые являются встроенными в MATLAB, вы можете удалить их (и записать только версию MATLAB в свой лист Excel).

Как псевдокод:

% get all files:
dependencies = depfun(mfilename());
for all dependencies:
    if not a matlab-builtin:
        copyfile(dependency, your_folder)

В качестве «долгосрочного» решения вы можете проверить, применимо ли в вашем случае использование системы контроля версий, такой как subversion, mercurial (или одна из многих других). В более крупных проектах это предпочтительный способ записи версии исходного кода, используемой для получения определенного результата.

person sebastian    schedule 23.09.2013
comment
Хорошо, спасибо, я боялся, что это был ответ, но приятно подтвердить. Однако depfun(mfilename()) полезен. - person dustynrobots; 24.09.2013