116 votes

Matlab : exécuter un fichier m à partir de la ligne de commande

Supposer que;

J'ai un fichier m à l'emplacement : C:\M1\M2\M3\mfile.m

Et le fichier exe du matlab est à cet emplacement : C:\E1\E2\E3\matlab.exe

Je souhaite exécuter ce fichier m avec Matlab, à partir de la ligne de commande, par exemple dans un fichier .bat. Comment puis-je faire cela, y a-t-il un moyen de le faire?

115voto

hkBattousai Points 1930

Une commande comme celle-ci exécute le m-file avec succès :

"C:\<a long path here>\matlab.exe" -nodisplay -nosplash -nodesktop -r "run('C:\<a long path here>\mfile.m'); exit;"

71voto

elachell Points 1799

Je pense qu'un point important qui n'a pas été mentionné dans les réponses précédentes est que, s'il n'est pas explicitement indiqué, l'interpréteur matlab restera ouvert. Par conséquent, à la réponse de @hkBattousai j'ajouterai la commande exit :

"C:\<a long path here>\matlab.exe" -nodisplay -nosplash -nodesktop -r "run('C:\<a long path here>\mfile.m');exit;"

27voto

slux83 Points 634

Sous Linux, vous pouvez faire la même chose et vous pouvez en fait renvoyer au shell un code d'erreur personnalisé, comme le suivant :

 #!/bin/bash
matlab -nodisplay -nojvm -nosplash -nodesktop -r \ 
      "try, run('/foo/bar/my_script.m'), catch, exit(1), end, exit(0);"
echo "matlab exit code: $?"

il affiche matlab exit code: 1 si le script lève une exception, matlab exit code: 0 sinon.

14voto

aardvarkk Points 4381

Voici les étapes :

  1. Démarrez la ligne de commande.
  2. Entrez le dossier contenant le fichier .m avec cd C:\M1\M2\M3
  3. Exécutez ce qui suit : C:\E1\E2\E3\matlab.exe -r mfile

Les systèmes Windows utiliseront votre dossier actuel comme emplacement pour MATLAB pour rechercher les fichiers .m, et l' -r essaie de démarrer le fichier .m donné dès le démarrage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X