2012-12-18 2 views
3

Je travaille sur un projet de robotique médicale qui capture une série d'images et les traite ensuite dans MATLAB. Comme un certain nombre d'autres choses doivent être faites en dehors de MATLAB, j'utilise une autre langue pour le contrôle global, et en utilisant les commandes de la console pour déclencher d'autres parties.Comment appeler une fonction Matlab qui prend la saisie de texte à partir de la ligne de commande?

J'ai un seul fichier .m avec une seule fonction qui prend le chemin du fichier dans le répertoire où se trouvent les images et fait tout le traitement MATLAB. Comment puis-je appeler cela depuis la ligne de commande? J'ai vu matlab -r "function(input)" discuté dans d'autres réponses ici, mais cela ne fonctionne pas pour moi (je reçois une erreur de syntaxe au paren ouvert). Plus précisément, j'obtiens: matlab: eval: line 1690: syntax error near unexpected token '('.

J'ai vu quelques personnes dire que cela doit être fait en appelant un script shell (que je n'ai aucune idée de comment écrire), mais un certain nombre d'autres personnes disent que c'est faisable sans cela, quelqu'un peut-il clarifier?

En outre, en supposant que j'ai simplement bâclé la syntaxe matlab -r, comment MATLAB sait où trouver le fichier .m? A-t-il besoin d'être dans le répertoire dans lequel j'exécute la commande?

Répondre

3

Je devine que vous essayez:

matlab -r test('hi') 

et obtenir ...

bash: syntax error near unexpected token `(' 

ou quelque chose de similaire?

Réponse: Vous devez utiliser " " autour du function(input), à savoir:

matlab -r "test('hi')" 

Cela va test.m dans mon répertoire en cours avec la chaîne d'entrée 'hi'.

Pour ce faire, dans un script shell nommé runmatlabcommand.sh, à dire bash, il vous suffit d'ouvrir un fichier et écrire:

#!/bin/bash 
matlab -r "test('hi')" 

puis exécuter ce script à partir de la ligne de commande en tapant ./runmatlabcommand.sh. Assurez-vous que le script a les autorisations d'exécution avant d'essayer de l'exécuter;)

+0

Ah, typo dans la question en fait. Je faisais la fonction 'matlab -r '(entrée)" ', avec les guillemets que vous décrivez. Ai-je besoin des apostrophes autour de l'entrée? –

+0

@Oblivious Sage Seulement si 'input' est une chaîne. – dinkelk

+0

@Oblivious Sage Êtes-vous sûr que votre script se trouve dans votre répertoire actuel? – dinkelk

Questions connexes