3

この方法でfit.mという matlab コードのチャンクを実行しています。

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 コマンド ラインの実行に慣れていません。

4

1 に答える 1

3

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...

編集: 読み込まれた変数を処理するために mat ファイルを構造体に読み込む同様のソリューションは、ここで詳細を確認できます。

于 2012-12-04T18:59:31.377 に答える