Запустите командную строку 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...

РЕДАКТИРОВАТЬ: Подобное решение загрузки файла мат в структуру для обработки загруженных переменных можно найти здесь с некоторыми более подробной информацией.

Другие вопросы по тегам