Я установил Matlab 2014 в Ubuntu. Моя проблема: Я создаю несколько входных файлов для другой программы Quantum Espresso в Matlab. Теперь я должен передать эти файлы в Quantum Espresso, используя командную строку matlab. Теперь я знаю, что могу сделать это с помощью Linux Terminal, но мой способ решения моей проблемы достиг того, что мой единственный вариант - «вызов Quantum Espresso из matlab». Один единственный вызов на самом деле легко:вызов внешней программы в matlab в цикле
! installation/folder/espresso-5.3.0/bin/pw.x <inputfile> outputfile
Проблема в том, у меня есть несколько входных файлов с именами, как 1name.in 1name.in .... Поэтому повторные вызовы должны выполняться в цикле. Но как?
Я пробовал: сценарий оболочки для зацикливания файлов. Я добавил, что дополнительные '!' для каждой строки скрипта, но он не работает. Я также попытался написать цикл, как это:
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» в число моих входных файлов. Ясно, что это означает, что вы передаете файл nemaed 'fulinname' not 1name.in и приведете к выходному файлу с именем 'fuloutname'
Я также попытался сделать это, поскольку вы обычно загружаете различные файлы в цикл, но это также не работает
Пожалуйста, помогите мне.
Вы должны использовать 'unix' функцию' МояКоманда = «mycall'' и' UNIX (МояКоманда) ' – obchardon
@obchardon Должен ли я использовать его как:' command1 = 'для значения в $ 1 * .in'' ... а затем 'unix (command1)'? Это приводит к ошибке: '/ bin/bash: -c: строка 1: синтаксическая ошибка: неожиданный конец файла –
переместил ее из ответа - @ fb.researcher - попробуйте в matlab'! 'Плюс строку. Я действительно верю, что @obchardon правильно ответил на вопрос. – bdecaf