Comment appeler MATLAB script en ligne de commande?
J'ai essayé d'appeler matlab depuis le Terminal (j'ai un Mac) et ont simplement exécuter un programme pour moi, sans écran ni rien, juste le programme. Ce programme affiche des graphiques et écrit un fichier texte pour moi de l'utiliser. J'ai trouvé plusieurs réponses précédentes sur cette question, et j'ai donc essayé:
matlab -nodisplay -r foo
matlab -nodisplay -r foo.m
matlab -nojvm -nosplash -nodisplay -r foo;quit;
matlab -nojvm -nosplash -nodisplay -r "foo;quit;"
matlab -nojvm -nodesktop -r "foo;quit;"
matlab -nojvm -nodesktop -r
"foo"
matlab -nojvm -nodesktop -nosplash -r foo
Presque à chaque fois, je l'ai essayer, je reçois la même réponse (si la ligne n'a tout simplement pas de provoquer l'invite à dire "cassez-vous" et de renoncer): le programme MATLAB fenêtre va s'ouvrir, et elle restera ouverte. Il va interagir normalement. Ligne de commande et de ne rien faire jusqu'à ce que je ferme la fenêtre. Le programme que je veux n'est pas exécutée. La fenêtre juste... là.
Si ça aide, c'est de cette façon que j'ai matlab
codé dans mon bac:
#!/bin/bash
/Applications/MATLAB_R2015b.app/bin/matlab
Je n'ai aucune idée de ce qui se passe. Toute aide serait grandement appréciée.
exit
à votre fichier (foo.m) et en essayant matlab -nosplash -nojvm -nodesktop -r "foo"
.À la fois avec et sans -nodisplay, c'est un no go.
Et le script fonctionne comme prévu lorsqu'il est appelé de manière interactive à partir de la gui matlab?
Et quel est le comportement attendu d'un script produisant des figures si les chiffres sont désactivés par un inexistante gui? BTW, le terminal ne pas être sensible tout en matlab exécute est parfaitement normal, dans linux, vous pouvez obtenir une invite de commande dos en arrière en mettant une esperluette (
&
) à la fin de votre commande (mais tuer le terminal processus peut tuer matlab cours d'exécution).Le script fonctionne normalement lorsqu'il est appelé à partir de l'interface graphique.
OriginalL'auteur Breaking Bioinformatics | 2015-10-17
Vous devez vous connecter pour publier un commentaire.
Votre
bash
script d'appel Matlab ne va pas passer des arguments à la Matlab exécutable. Lorsque vous tapezce qui s'appelle en réalité est
sans arguments. Il y a plusieurs façons de résoudre ce problème tout en conservant la facilité de simplement appeler
matlab
. Vous pouvez également appeler le chemin d'accès complet àmatlab
commeConfiguration
matlab
ExécutableScript Bash
Étant donné que vous avez déjà écrit un
bash
script pour appelermatlab
la solution la plus simple est de le modifier pour inclure la$@
bash
générique commeLa
$@
générique passe tous les paramètres que vous utilisez, comme-nodesktop -nosplash -r "foo"
à lamatlab
exécutable donc ce qui est en fait appelé maintenant estJe vous recommande de placer votre
matlab
bash
script dans/usr/local/bin
et de s'assurer que/usr/local/bin
est dans votrePATH
. Le/usr/local/
répertoire utilisateur scripts installés par opposition à l'installation d'un dispositif de scripts. Vous pouvez vérifier quels sont les répertoires de votrePATH
avecet vous devriez voir un résultat similaire à celui ci-dessus avec
/usr/local/bin
présent. Lebash
script doit également être exécutable. Vous pouvez définir cette avecNote: OS X El Capitan places fortes restrictions sur la façon dont les scripts peuvent être installés via sa nouvelle Système De Protection De L'Intégrité fonctionnalité.
La création d'un lien symbolique vers
matlab
Une autre méthode similaire à la création de la
bash
script est de créer un lien symbolique vers lematlab
exécutable. Ce nouveau doit être placé dans/usr/local/bin
Aussi pour cette méthode, vous devez vous assurer que
/usr/local/bin
est dans votrePATH
.Ajoutant
matlab
à laPATH
Une méthode alternative est d'ajouter simplement le répertoire où le
matlab
exécutable réside à votrePATH
. Vous pouvez le faire en modifiant votre.bash_profile
(ou.bashrc
) fichier. Votre.bash_profile
fichier se trouve dans votre répertoire home à~/.bash_profile
. Il est exécuté chaque fois qu'un utilisateur ouvre le Terminal. Pour ajoutermatlab
à laPATH
ajouter simplement. Maintenant, vous pouvez appeler
matlab
avecet ce sera de localiser les
matlab
exécutable dans/Applications/MATLAB_R2015b.app/bin/
et de l'appeler avecAprès vous modifiez votre
.bash_profile
fichier que vous avez besoin de la recharger avecou de redémarrer le Terminal pour que les modifications prennent effet.
Note: je préfère modifier le
.bashrc
fichier au lieu de.bash_profile
parce que je utiliser.bashrc
sur Linux. J'ai réglé mon.bash_profile
fichier à charger mon.bashrc
fichierNote: Si vous voulez
matlab
être disponibles pour tous les utilisateurs, et pas seulement votre utilisateur, vous devez ajouterà l'échelle du système
/etc/profile
fichier.Création d'un Alias pour
matlab
La dernière méthode que je vais vous parler est la création d'un alias pour
matlab
. Nous faisons cela en modifiant notre.bash_profile
(ou.bashrc
) du fichier et l'ajout. Encore une fois, après avoir fait des changements, nous avons besoin de la recharger avec
ou de redémarrer le Terminal pour que les modifications prennent effet. Et, si vous voulez
matlab
être disponibles pour tous les utilisateurs, et pas seulement votre utilisateur, vous devez modifier le système à l'échelle de/etc/profile
fichier.L'exécution de
matlab
à partir du TerminalMaintenant que nous avons mis en place
matlab
pratique pour s'exécuter à partir du Terminal avec la commande simpleon peut regarder la réalité de l'exécution de scripts. Pour exécuter un script Matlab, nous avons d'abord besoin d'être dans le répertoire où le script réside ou il pourrait être dans notre Matlab
PATH
. Je vais supposer qu'il n'est pas dans votre chemin et nous allons donccd
vers le bon répertoireMaintenant effectuer
matlab
sans le bureau MathWorks nous dit d'utiliser-nojvm -nodisplay -nosplash
mais si nous utilisons-nojvm
et/ou-nodisplay
nous ne serons pas en mesure d'afficher les graphiques. Nous avons donc déposer-nojvm
et remplacer-nodisplay
avec-nodesktop
et l'utilisation-nodesktop -nosplash
. Cela permettra de lancer Matlab sans écran et de nous permettre d'afficher des graphiques. Le bon de commande pour exécuter lematlab
sans le bureau GUI, tout en nous permettant d'afficher des graphiques estMaintenant, vous pouvez utiliser le Terminal (invite de commande) que la fenêtre de commande Matlab et exécuter des commandes comme d'habitude. Par exemple on pourrait appeler foo
Alternativement, on peut utiliser la
-r
option pour lematlab
exécutable pour passer des commandes de Matlab pour l'exécuter. Ceux-ci doivent être indiqués correctement et valide Matlab syntaxe. Donc, notre commande pour démarrer Matlab avec nos options précédentes et d'exécuter le scriptfoo.m
devientDe côté: Si, par exemple, nous avons été à l'utilisation
(notez l'utilisation de
exit;
) ce serait Matlab, exécuterfoo.m
, afficher les graphiques et puis la sortie de Matlab clôture les graphiques aussi.Vous êtes les bienvenus, content d'avoir pu aider.
Oui. L'énorme quantité de modèle de l'analyse que j'ai à faire est considérablement accéléré par le fait d'avoir autour. Merci incroyablement.
J'ai réellement besoin de ligne de commande ici. Je suis en cours d'exécution d'un script perl qui permet de regex de recherche et remplace certaines variables dans le script MATLAB, puis l'exécute, analyse les données de façon appropriée et stocke et analyse de plusieurs manières différentes. Le mot "ennuyeux" ne serait même pas commencer à décrire comment ennuyeux serait de le faire à la main.
OriginalL'auteur IKavanagh
Je pense que le script bash ignore les arguments de ligne de commande.
Pourriez-vous essayer le suivant?
matlab
était unbash
alias
à la place.A donné une erreur de syntaxe: -bash: erreur de syntaxe près de jeton inattendu " &"
Édité, essayez à nouveau
Maintenant, il va tirer vers le haut Matlab dans la ligne de commande au lieu de cela, mais maintenant il dit "toto.m n'est pas trouvé" même si je suis la ligne, tandis que les cd avais dans le dossier toto.m à droite.
Un ou plusieurs des éléments suivants doit attraper: 1.
"addpath /your/script/path;run foo.m;quit;"
2."cd /your/script/path;run foo.m;quit;"
3."cd /your/script/path;foo;quit;"
4."addpath /your/script/path;foo;quit;"
OriginalL'auteur Yuval Atzmon
Cela devrait faire l'affaire
profiter de
OriginalL'auteur eyalsoreq
Vous devriez être en mesure de faire
en d'autres termes utiliser le
<
signe de re-direct, dans Linux.OriginalL'auteur alle_meije