J'ai installé Matlab 2014 dans Ubuntu. Mon problème: Je compile plusieurs fichiers d'entrée pour un autre programme, Quantum Espresso, dans Matlab. Maintenant, je devrais passer ces fichiers à Quantum Espresso en utilisant la ligne de commande matlab. Maintenant, je sais que je peux le faire en utilisant Linux Terminal, mais ma façon de résoudre mon problème a atteint le point que ma seule option est d'appeler «Quantum Espresso from matlab». Un seul appel est en fait simple:l'appel d'un programme externe dans matlab dans une boucle
! installation/folder/espresso-5.3.0/bin/pw.x <inputfile> outputfile
Le problème est que j'ai plusieurs fichiers d'entrée nommés comme 1name.in 1name.in .... Donc, ces appels répétés devraient être faits en boucle. Mais comment?
J'ai essayé: le script shell pour boucler les fichiers. J'ai ajouté ce supplément '!' à chaque ligne du script mais cela ne fonctionne pas. J'ai essayé aussi d'écrire une boucle comme ceci:
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
où « N » en nombre de mes fichiers d'entrée. Clairement exécuter cela signifie que vous passez un fichier nommé 'fulinname' pas 1name.in et se traduira par un fichier de sortie nommé 'fuloutname'
J'ai également essayé de le faire comme vous chargez normalement plusieurs fichiers dans une boucle, mais aussi n'a pas fonctionné
S'il vous plaît aidez-moi.
Vous devez utiliser la fonction 'unix',' mycommand = « et' mycall'' unix (mycommand) ' – obchardon
@obchardon Dois-je utiliser comme:' command1 = 'pour la valeur dans $ 1 * .in'' ... et ensuite 'unix (commande1)'? Il en résulte une erreur: '/ bin/bash: -c: ligne 1: erreur de syntaxe: fin inattendue du fichier' –
l'a déplacé de la réponse - @ fb.researcher - essaie dans matlab'! 'Plus la chaîne. Je crois vraiment que @obchardon a répondu correctement à la question. – bdecaf