How do I call MATLAB from the DOS prompt?

86 views (last 30 days)
I would like to call MATLAB from the DOS prompt without opening it, and have it return a specific output file.

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 30 Dec 2016
To start MATLAB from a DOS window running inside Windows, do the following:
1. Open a DOS prompt
2. Change directories to $MATLABROOT\bin
(where $MATLABROOT is the MATLAB root directory on your machine, as returned by typing
matlabroot
at the MATLAB Command Prompt.)
3. Type "matlab"
You can also create your own batch file in the $MATLABROOT\bin directory
NOTE: If you have other commands that follow the call to MATLAB in your batch file, use matlab.exe rather than matlab.bat. If you call on matlab.bat, subsequent commands in the batch file will not get executed.
To do so, use the following instructions:
1. Create a file called mat.bat and place the following line into it:
win $MATLABROOT\bin\matlab.exe
2. Insert $MATLABROOT\bin into the path in the autoexec.bat file.
(where $MATLABROOT is the MATLAB root directory on your machine, as returned by typing
matlabroot
at the MATLAB Command Prompt.)
Now you can type "mat" at the dos prompt and Windows will come up with MATLAB.
You can run MATLAB from the DOS prompt and save the session to an output file by doing the following:
matlab -r matlab_filename_here -logfile c:\temp\logfile
Depending on the directory you are in, you may need to specify the path to the executable. The MATLAB file you want to run must be on your path or in the directory. This MATLAB file can be a function that takes arguments or a script.
When running a script 'myfile.m', use the following command:
matlab -r myfile
When calling a function 'myfile.m' which accepts two arguments:
matlab -r myfile(arg1,arg2)
To pass numeric values into 'myfile.m' simply replace 'arg1' and 'arg2' with numeric values. To pass string or character values into 'myfile.m' replace 'arg1' and 'arg2' with the string or character values surrounded in single quotes. For exampl to pass the string values 'hello' and 'world' into 'myfile.m' use the following command:
matlab -r myfile('hello','world')
Note that the logfile will contain everything that was displayed to the Command Window while the MATLAB file was running. If you want to generate any print files you need to do this in the MATLAB file. You can combine this example with the above one to create a batch file that takes input files and creates output files.
In addition, this will call up an additional instance of the MATLAB command window. If you wish this to exit after the computation is complete, you will need to add the command 'exit' to the end of your MATLAB file. You can suppress the splash screen by adding the -nosplash flag to the above command so it looks like the following:
matlab -nosplash -r mfile -logfile c:\temp\logfile
Although you cannot prevent MATLAB from creating a window when starting on Windows systems, you can force the window to be hidden, by using the start command with the -nodesktop and -minimize options together:
start matlab -nosplash -nodesktop -minimize -r matlab_filename_here -logfile c:\temp\logfile
If you would like to call multiple MATLAB functions using the -r switch you could write a single function which will call each of the other MATLAB functions in the desired order.
Note: Batch files can be called from Windows scheduler in order to run MATLAB commands at specific times. May not work for UNC pathnames.

More Answers (0)

Categories

Find more on Startup and Shutdown in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!