====== MATLAB PATH ======
==== startup.m ====
When MATLAB starts, it will look for a **pathdef.m** file in its startup directory. It should not be edited - leave the default MATLAB path containing only MATLAB native toolboxes. The rest should be configured dynamically, as explained below.
If a custom **startup.m** is found on the path, it will be executed: https://www.mathworks.com/help/matlab/ref/startup.html
There are __two ways__ to configure place the startup.m on the path:
1. Custom startup folder set via MATLAB icon: (right click on the MATLAB icon | Properties | Start in ) (e.g. F:\Dropbox\Sources\Repos\matlab_config\MATLAB2014) allows controlling different paths and other settings via **startup.m** file placed in this folder.
2. Place custom startup.m to your [[https://www.mathworks.com/help/matlab/ref/userpath.html|userpath]]
(type 'userpath' in the MATLAB command window to figure out yours).
For example, a minimal **startup.m** for automatically including all GitHub repositories (but excluding not needed internal .git folders) can be just:
addpath(genpath_exclude('YOUR_PATH_TO_REPOS','.git'));
**Note:** [[https://github.com/igorkagan/matlab_config/blob/master/MATLAB2014/genpath_exclude.m|genpath_exclude.m]] should also be placed in the startup folder.
Example startup.m for GitHub repositoriesand Fieldtrip and NeuroElf from DAG server (Y:):
disp('Welcome to YOUR MATLAB VERSION, e.g. MATLAB2014a');
addpath(genpath_exclude('YOUR_PATH_TO_REPOS','.git')); %<--- !!! change 'YOUR_PATH_TO_REPOS'
addpath('Y:\Sources\fieldtrip-20200604'); % or other path to fieldtrip
ft_defaults
% http://www.fieldtriptoolbox.org/faq/can_i_prevent_external_toolboxes_from_being_added_to_my_matlab_path/
[ftver, ftpath] = ft_version;
rmpath(fullfile(ftpath, 'external', 'signal'))
rmpath(fullfile(ftpath, 'external', 'stats'))
rmpath(fullfile(ftpath, 'external', 'images'))
addpath('Y:\Sources\NeuroElf_v11_7521'); addpath('Y:\Sources\NeuroElf_v11_7521\add_dag_ne_pipeline');
dbstop if error
----
See also https://github.com/igorkagan/matlab_config for the following example that includes genpath_exclude.m:
disp('Welcome to MATLAB2014');
set_sources_path;
edit;
EditorMacro('Alt-Control-h', @ig_createHeaderComment_dag);
dbstop if error
The function **set_sources_path.m** can be something like the one below, to add all repositories but exclude not needed internal .git folders:
addpath(genpath_exclude('F:\Dropbox\Sources\Repos','.git'));
==== pathdef.m ====
When MATLAB gives an "eval..." error on startup, permissions for pathdef.m are screwed up, see:
[[https://www.mathworks.com/matlabcentral/answers/307356-why-do-i-get-an-error-using-eval-undefined-function-workspacefunc-for-arguments-of-type-struct]]