首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在后台BASH #3上使用Matlab命令运行循环

在后台BASH #3上使用Matlab命令运行循环
EN

Stack Overflow用户
提问于 2012-05-30 17:41:55
回答 3查看 1.4K关注 0票数 0

在下面网站的帮助下,我成功地在后台运行了Matlab:

http://www.stat.osu.edu/computer-support/programming/background-jobs

我正在执行这个循环:

代码语言:javascript
复制
for ((i = 1; i <= 5; i++)); do
    echo $i>i.txt;
    matlab -nodesktop -nodisplay <script.m &> dummy.out &
done

在脚本中有一个部分:

代码语言:javascript
复制
fid=fopen( 'a:\folder\i.txt');'];
iter=str2double(fgets(fid))
myfunction(iter,a,b,c)

myfunction.m上的函数行是

代码语言:javascript
复制
myfunction(num,a,b,c)

此函数用于保存文件,其名称也会随'num‘的值而变化

意味着,输出将是: myfile1.mat用于第一个命令,myfile2用于第二个命令,依此类推。

当我运行不带循环的命令时

代码语言:javascript
复制
echo 1>i.txt;
matlab -nodesktop -nodisplay <script.m &> dummy.out &
echo 2>i.txt;
matlab -nodesktop -nodisplay <script.m &> dummy.out &

etc...

没有问题,输出也很好

当我运行循环时,我得到的唯一文件是myfile5.mat

我已经更改了代码,以便输入为myfunction(i1,a,b,c),myfunction(i2,a,b,c)...但是结果是一样的。

我认为这是因为保存部分在函数的末尾(它运行了很长时间),因为所有函数的'num‘都是5(循环完成的速度比计算快得多)。

有什么想法吗?tnx

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-01 10:42:26

我找到了解决问题的办法,

这非常简单,我所要做的就是将变量导出到环境中,然后它们在MATLAB脚本中读取它们

代码语言:javascript
复制
for ((i = 1; i <= 5; i++)); do
     export i
     matlab -nodesktop -nodisplay <script.m &> dummy.out &
done

在script.m中

代码语言:javascript
复制
iter=str2double(getenv('i'))
myfunction(iter,a,b,c)

效果很好!

票数 0
EN

Stack Overflow用户

发布于 2012-05-30 18:41:24

问题是,您使用相同的文件运行作业,因为它在后台模式下运行,首先该文件包含"1",然后是"2“、"3”、"4“、"5",只有在这之后,第一个脚本才开始计算(并且在文件中已经看到"5”,而不是"1")。

您现在正在尝试通过文件将参数传递给函数,对吗?我只是在想,为什么不把参数传递给函数本身呢?在Matlab中并行运行许多函数(在后台模式下),例如:http://www.mathworks.ch/matlabcentral/newsreader/view_thread/166876

票数 2
EN

Stack Overflow用户

发布于 2012-05-31 00:52:15

问题是MATLAB调用后的与号(&) -发生的情况是循环开始运行,将值1放入i.txt,然后派生一个MATLAB进程,然后循环再次运行,将值2放入i.txt,然后派生另一个 MATLAB进程,依此类推。现在MATLAB需要一段时间才能启动,这个循环真的很快,因为它不需要等待MATLAB调用的结束,所以当第一个MATLAB实例最终结束时,循环就结束了,所有调用的i.txt中的值都是5。

简短版本:删除&符号:)

这将使MATLAB在继续循环之前运行并完成。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10813711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档