我在Ubuntu中安装了Matlab 2014。我的问题: 我在Matlab中为另一个程序Quantum Espresso构建了几个输入文件。现在我应该使用matlab命令行将这些文件传递给Quantum Espresso。现在我知道我可以使用Linux终端来做到这一点,但我解决问题的方法已经达到了我唯一的选择就是从matlab调用Quantum Espresso'。一次通话很容易:
! installation/folder/espresso-5.3.0/bin/pw.x < inputfile > outputfile
问题是我有几个名为1name.in 1name.in ...的输入文件。所以这个重复的调用应该在循环中完成。但是如何?
我试过了: 用于循环文件的shell脚本。我补充说额外的&#39;!&#39;到脚本的每一行但它不起作用。 我也尝试写这样的循环:
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
其中&#39; N&#39;在我的输入文件的数量。显然运行这意味着你传递的文件是nemaed&#39; fulinname&#39;不是1name.in,将导致名为&#39; fuloutname&#39;
的输出文件我也尝试这样做,因为你通常在循环中加载各种文件,但它也不起作用
请帮帮我。
答案 0 :(得分:1)
您应该使用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