Changing the default MATLAB directory (Apple)
Suppose that you have your own directory for MATLAB programs and files
that you create. When you start MATLAB, it most likely has the working
directory set to something else. These instructions show how to change that.
In the MATLAB environment, you can find the working directory with
the
pwd
command. Exit the MATLAB software before doing the steps below.
Call up a terminal window to enter the commands below.
You have to change "startup.m" file. If it does not exist, first
copy it from "startupsav.m". First, change to the local MATLAB
directory (the directory may be different for computers other than Apple).
The commands in blue are what you type;
the green text is the system's response.
Text in red indicates that you will probably need
to change it for your computer. (Note that "ibook" and
"carmaux" are the names of my computers; these will likely be different
for you, too.)
- Change to the MATLAB directory:
ibook$
cd /Applications/MATLAB7/toolbox/local
- Check to see if the file exists.
ibook$
ls startup.m
ls: startup.m: No such file or directory
If it does exist, skip the next step.
- Copy the file (since it does not exist):
ibook$
cp startupsav.m startup.m
- Add a line to the startup file, by typing this (the first line is blank):
ibook$
cat >> startup.m
cd /Users/mweeks/matlab_work
<CTRL-D>
Do not actually type that last line; instead
hold down the "ctrl" key and press the "d" key
at the same time.
- Now we can see the file:
ibook$
cat startup.m
%STARTUPSAV Startup file
% Change the name of this file to STARTUP.M. The file
% is executed when MATLAB starts up, if it exists
% anywhere on the path. In this example, the
% MAT-file generated during quitting using FINISHSAV
% is loaded into MATLAB during startup.
%
% Copyright 1984-2000 The MathWorks, Inc.
% $Revision: 1.4 $ $Date: 2000/06/01 16:19:26 $
%
% load matlab.mat
cd /Users/mweeks/matlab_work
That's it. The next time you start MATLAB, the directory should be
set to /Users/mweeks/matlab_work.
If you get an error...
You may get the following error.
Warning: Executing startup failed in matlabrc.
This indicates a potentially serious problem in your MATLAB setup,
which should be resolved as soon as possible. Error detected was:
MATLAB:load:couldNotReadFile
Error using ==> load
Unable to read file matlab.mat: No such file or directory.
> In matlabrc at 255
>>
If so, don't panic!
The problem is that the "matlabrc" program calls the
"startup.m" file. The default (which we created above)
contains the line
load matlab.mat. But this file is not found (or you would not get
this error).
There are two ways of fixing it: either tell MATLAB to ignore that line,
or create the file.
You can comment out line in the "startup.m" file:
% load matlab.mat
Or, if you prefer, you can create the file it looks for (in MATLAB):
>> cd /Applications/MATLAB7/
>> save matlab.mat
If you get this error...
Another error that you might get is something like this:
"The file
'/Users/mweeks/matlab_work/example3.m'
is not in the application's expanded CTF archive at
'/Users/mweeks/Library/Application Support/.mcrCache9.1/exampl0'.
This is typically caused by calls to ADDPATH in your startup.m or matlabrc.m files. Please see the compiler documentation and use the ISDEPLOYED function to ensure ADDPATH commands are not executed by deployed applications.
Previously accessible file "/Users/mweeks/matlab_work/example3.m" is now inaccessible."
If you use the mcc
command to compile your MATLAB code, you might get an error due to the
startup file. The way that I understand this is that both the MATLAB
session and a call to a MATLAB compiled program look to the startup.m
file, and that it works for the normal MATLAB session, but not
for compiled programs. So we need to tell it to only do these things
when it is a normal session. The startup.m file that works (for me)
is shown below.
$
cat startup.m
%STARTUPSAV Startup file
% Change the name of this file to STARTUP.M. The file
% is executed when MATLAB starts up, if it exists
% anywhere on the path. In this example, the
% MAT-file generated during quitting using FINISHSAV
% is loaded into MATLAB during startup.
% Copyright 1984-2000 The MathWorks, Inc.
%load matlab.mat
% Check isdeployed first, to make mcc generated files work.
if (~isdeployed)
userpath('/Users/mweeks/matlab_work')
cd /Users/mweeks/matlab_work
end
What if you are running Linux?
Here's what I did. This changes the user search directory for MATLAB.
(Not the default directory, but adds to the search path.)
This is done while running MATLAB.
>>
userpath
ans =
/home/mweeks/Documents/MATLAB:
That seems like a logical place to store MATLAB files, but I prefer
another location. Below, I clear the current userpath, and then set
it to the directory that I want to use. See the MATLAB help utility
for more information.
>>
userpath('clear')
>>
userpath('/home/mweeks/matlab_work')
Now I check to make sure it worked.
>> userpath
ans =
/home/mweeks/matlab_work:
It looks fine now, and MATLAB should easily find the files that I use.
This information is also stored in the preferences file.
I verify this here, using a terminal window.
I do not recommend that you alter this file, unless you are sure you
know what you are doing!
carmaux:~/.matlab/R2008a$
more matlab.prf
#MATLAB Preferences
#Sat Sep 27 00:56:56 EDT 2008
...
UserWorkFolder=S/home/mweeks/matlab_work
As expected, the preferences file stores the userpath information.
Note that the "=S" looks a little strange, but it is not a typo.
--
Michael Weeks, copyright 2008, 2009, 2017