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 回答