run matlab function with arguments on linux terminal

93 vues (au cours des 30 derniers jours)
Ayoub
Ayoub le 22 Mai 2012
Commenté : Walter Roberson le 20 Juin 2019
Hello, do you have any idea how to run matlab functions from the linux shell specifying their arguments? what i tried was: { matlab -r myfunction(argument1,argument2) } but it doesn't work oO
  2 commentaires
Yekaterina Gilbo
Yekaterina Gilbo le 14 Juil 2017
Hi Ayoub, what is the purpose of the "-r" and also how do you know what to even type on the terminal (what should I look up for this?) Thanks!
Walter Roberson
Walter Roberson le 14 Juil 2017
"-r" followed by something indicates that MATLAB should take what follows as a command to run.

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 22 Mai 2012
matlab -r 'myfunction(argument1,argument2)';
Or safer:
matlab -r 'try myfunction(argument1,argument2); catch; end; quit'

Plus de réponses (4)

Thomas
Thomas le 22 Mai 2012
Adding to Walter's answers above..
you could also try
matlab -r -nodisplay -nojvm 'myfunction(argument1,argument2)';
-no display removes the Xdisplay and -nojvm starts matlab without hte Java virtual machine.
you could also try
matlab -r -nodesktop -nojvm 'myfunction(argument1,argument2)';
or use the abovewith the try-catch loop as suggested by Walter..

USMAN
USMAN le 15 Juil 2014
I would rearrange the sequence of input arguments as follows:
matlab -nodisplay -nojvm -r 'FunctionName Arg1 Arg2; exit;'
exit will also exit Matlab and bring control back to shell
  1 commentaire
Patrik Ek
Patrik Ek le 2 Jan 2015
Which is the only way to use the -r argument. Good add!

Connectez-vous pour commenter.


Ayoub
Ayoub le 29 Mai 2012
thankyou guys :)

Martina Audagnotto
Martina Audagnotto le 21 Mai 2018
Modifié(e) : Walter Roberson le 22 Mai 2018
Hi,
I have a similar question regarding running matlab with arguments on linux terminal. I want to run my matlab code on GPU and if I set the number of GPU manually the code run, while if i give the number of GPU as a variable of my function I get the following error:
Not enough input arguments.
This is how I run the function:
matlab -nodesktop -r "nodes=2; averaging_filament='single_filament_averaging_reikaparam_is40'; folder='polarity_TRIAL'; run streamline_tomo_GPU.m" ;
and inside the code:
GPU=[nodes];
No idea why is it not running :(
  3 commentaires
Lucademicus
Lucademicus le 20 Juin 2019
According to the matlablinux documentation, you should not use the option
-r
but instead use the option
-batch
I've tested this on MATLAB R2018b.
The command
matlab -nodisplay -nojvm -r 'somefunction(someargument); anotherfunction(anotherargument);'
did not run anotherfunction(). It did when I changed -r to -batch!
Walter Roberson
Walter Roberson le 20 Juin 2019
-batch is a new option as of R2019a. -r still works.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by