Pour exécuter un script, vous pouvez ouvrir Matlab (vous pouvez empêcher de l'exécuter sans l'interface graphique en utilisant -nodisplay et -nodesktop flags), puis exécutez le script en utilisant le run commande, et enfin fermez matlab en utilisant exit .
Vous pouvez faire tout cela depuis un terminal avec une seule instruction :
matlab -nodisplay -nosplash -nodesktop -r "run('path/to/your/script.m');exit;"
Cependant, Matlab affiche le message de bienvenue sur la console avant d'exécuter votre script. Pour vous débarrasser du message de bienvenue, sautez simplement les 11 premières lignes (10 selon votre version de Matlab) en utilisant tail -n +11
Votre instruction finale sera donc :
matlab -nodisplay -nosplash -nodesktop -r "run('path/to/your/script.m');exit;" | tail -n +11
À partir de R2019a, la méthode préférée serait, pour votre script test.m :
matlab -batch "test"
Cela présente plusieurs avantages, principalement pas besoin de tous les -no flags et MATLAB sortira avec un statut différent de zéro si test.m (doit être sur le chemin de recherche) contient une erreur.
Depuis la page de documentation, matlab (Linux) :
Exécutez le script, l'instruction ou la fonction MATLAB de manière non interactive.MATLAB :
- Commence sans le bureau
- N'affiche pas l'écran de démarrage
- Exécute l'instruction
- Désactive les modifications des préférences
- Désactive la mise en cache de la boîte à outils
- Enregistre le texte dans
stdoutetstderr- N'affiche pas les boîtes de dialogue
- Sortie automatiquement avec le code de sortie 0 si script s'exécute avec succès. Sinon, MATLAB se termine avec un code de sortie différent de zéro.
déclaration est le code MATLAB entre guillemets doubles. Si instruction est le nom d'une fonction ou d'un script MATLAB, ne spécifiez pas l'extension de fichier. Tout fichier requis doit se trouver sur le chemin de recherche MATLAB ou dans le dossier de démarrage.
Utilisez le
-batchoption dans les scripts non interactifs ou les flux de travail en ligne de commande. Ne pas utiliser cette option avec le-roption.Pour tester si une session de MATLAB s'exécute en mode batch, appelez le
batchStartupOptionUsedfonction.Exemple :
-batch "myscript"
J'ai créé un script shell de base appelé runm et mets sur mon chemin :
$ runm mymatlab.m
Scénario :
# simple script to run matlab script
if [ $# -eq 0 ]
then
echo "please pass m script"
fi
matlab -nodisplay -nosplash -nodesktop -r "run('$1');"