Каков наилучший подход для установки переменных запуска в Matlab, на которые не влияют команды типа `clear`? - PullRequest
1 голос
/ 21 августа 2011

У меня есть ситуация, в которой большой объем данных, выводимых из программ Matlab, должен храниться в определенном месте, которое может варьироваться от машины к машине.Я хотел бы иметь глобальную переменную, которая устанавливается при запуске для каждой машины.Эта переменная может затем использоваться различными программами для определения каталога для хранения выходных данных. Примечание подход должен быть независимым от платформы , так как существует потенциально 3 операционных системы, которые будут запускать эти сценарии.

Один подход, который я рассмотрелиспользует setenv:

setenv('DATDIR',fullfile(path,to,dir));

Тогда скрипт / функция может запросить эту переменную, используя:

savedir = getenv('DATDIR');

В этом случае переменная не изменяется clear в среде Matlab,

Другой подход , который я подумал использовать, - это просто создание функции (например, matlabroot), которая находится в пути и просто возвращает строку, которой назначен путь к каталогу данных.

function path = datroot()
    path = fullfile(path,to,dir);
end

Наконец, на мой вопрос: Есть ли другой способ добиться того же результата?Если у Matlab есть свои собственные переменные окружения, я бы лучше использовал их вместо функций или переменных системного уровня.Это возможно?

1 Ответ

5 голосов
/ 21 августа 2011

Используйте набор getpref / setpref / ispref / addpref / rmpref . Согласно документации:

Значения предпочтений являются постоянными и сохраняют свои значения между Сеансы MATLAB. Где они хранятся, зависит от системы.

Это похоже на .ini или Java .properties файлы, но вместо этого использует MAT-файлы для сохранения значений (которые могут быть любого типа MATLAB). На моей машине с Windows используемый файл хранится как:

%APPDATA%\MathWorks\MATLAB\R2010b\matlabprefs.mat
...