Запустите командную строку matlab и автоматизируйте запуск bjobs на сервере Unix.
Таким образом, я запускаю кусок кода Matlab под названием fit.m,
clear all;
load('/pathtomatfile/alldata.mat')
count = rxw1;
count = double(count);
x_cov = ltgbd;
alldata.mat имеет несколько данных, представляющих интерес, т.е.
rxw1
rbg2
rfd1
wop3,
ltgbd,
etc.
Я могу запустить такой скрипт из командной строки для заданных данных, представляющих интерес (в моем примере count=rxw1),
matlab -nodisplay -nojvm -nosplash -r ${pathtoscript}fit -logfile lfile.txt
Однако мне нужно автоматизировать работу, чтобы я мог указать matlab сделать count = любой из других наборов данных в файле mat. Т.е. я хотел бы параллельно работать со сценарием для разных наборов данных, но мне нужно что-то вроде:
matlab -nodisplay -nojvm -nosplash -r ${pathtoscript}fit -logfile lfile.txt DATAOFINTERESTHERE (i.e., rxw1 count will equal rxw1, etc.)
Можно ли сделать то, что я предлагаю? Как мне автоматизировать запуск сценария для любого набора данных, который я выберу, указав имя набора данных в качестве входного параметра при вызове сценария?
После этого я планирую запустить их все параллельно, отправляя задания через LSF, но предоставляя в качестве входных данных имя, представляющее интерес, что-то вроде этого:
bsub -q week -R'rusage[mem=8000]' \
"matlab -nodisplay -nojvm -nosplash -r ${pathtoscript}fit -logfile lfile.txt DATAOFINTEREST"
Извините, если это слишком простой вопрос Q, но я не знаком с запуском командной строки Matlab.
1 ответ
Ты можешь сделать fit
функция, а не скрипт. fit
Функция может иметь единственную входную переменную, указывающую на правильный файл данных. Тогда вы можете запустить
matlab -nodisplay -nojvm -nosplash -r "cd ${pathtoscript}; fit('${dataofinterest}');exit;"
РЕДАКТИРОВАТЬ: добавил это подробно fit
веселье.
Ваш fit
функция должна выглядеть примерно так
function fit( variableName )
%
% run fit for a specific variable from the mat file
% variableName is a string, e.g. variableName = 'rgb1';
%
ld = load('/pathtomatfile/alldata.mat');
count = ld.(variableName); % access variables in mat file as struct fields
count = double( count );
% and I believe you can take it from here...
РЕДАКТИРОВАТЬ: Подобное решение загрузки файла мат в структуру для обработки загруженных переменных можно найти здесь с некоторыми более подробной информацией.