我已经在Ubuntu中安装了Matlab 2014。我的问题:我在Matlab中为另一个程序Quantum Espresso构建了多个输入文件。现在,我应该使用matlab命令行将这些文件传递给Quantum Espresso。现在我知道我可以使用Linux Terminal来做到这一点,但是我解决问题的方法已经达到了我唯一的选择“从matlab调用Quantum Espresso”的地步。一个电话实际上很容易:
! installation/folder/espresso-5.3.0/bin/pw.x < inputfile > outputfile
问题是我有几个名为1name.in 1name.in ...的输入文件。因此,此重复调用应循环执行。但是如何?
我试过了:通过文件循环的shell脚本。我加了额外的“!” 到脚本的每一行,但不起作用。我也试图写一个像这样的循环:
for i = 1:N
prefix = int2str(i);
fuloutname = [prefix 'name' '.' 'out'];
fulinname = [prefix 'name' '.' 'in'];
! adress/espresso-5.3.0/bin/pw.x < fulinname > fuloutname ;
end
在我的输入文件中,其中“ N”个。显然,这意味着您正在传递一个名为“ fulinname”而不是1name.in的文件,这将导致输出文件名为“ fuloutname”
我也尝试这样做,因为您通常在循环中加载各种文件,但是它也没有用
请帮我。
您应该使用以下unix
功能:
for i = 1:N
prefix = int2str(i);
fuloutname = [prefix 'name' '.' 'out'];
fulinname = [prefix 'name' '.' 'in'];
mycommand = ['adress/espresso-5.3.0/bin/pw.x < ',fulinname,' > ',fuloutname];
unix(mycommand);
%system(mycommand); %will give you the same, result and this function is cross-platform
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句