użycie run
, pozwoli Ci wykorzystać własne funkcje zamiast wbudowanych ins bez dodając je do ścieżki.
Zrobione z pomocy
:
Uruchom skrypt, który nie znajduje się na bieżącej ścieżce Składnia
run scriptname
Jak @Cheery słusznie powiedział, że nie może być wykorzystywane do funkcji, które akceptują argumenty. Jednak plik run.m
jest plikiem modyfikowalnym, dlatego stworzyłem wersję rozszerzoną, która może akceptować argumenty. Można go również łatwo zmodyfikować dla argumentów wyjściowych.
function runExtended(script,varargin)
cur = cd;
if isempty(script), return, end
if ispc, script(script=='/')='\'; end
[p,s,ext] = fileparts(script);
if ~isempty(p),
if exist(p,'dir'),
cd(p)
w = which(s);
if ~isempty(w),
% Check to make sure everything matches
[wp,ws,wext] = fileparts(w);
% Allow users to choose the .m file and run a .p
if strcmp(wext,'.p') && strcmp(ext,'.m'),
wext = '.m';
end
if ispc
cont = ~strcmpi(wp,pwd) | ~strcmpi(ws,s) | ...
(~isempty(ext) & ~strcmpi(wext,ext));
else
cont = ~isequal(wp,pwd) | ~isequal(ws,s) | ...
(~isempty(ext) & ~isequal(wext,ext));
end
if cont
if exist([s ext],'file')
cd(cur)
rehash;
error('MATLAB:run:CannotExecute','Can''t run %s.',[s ext]);
else
cd(cur)
rehash;
error('MATLAB:run:FileNotFound','Can''t find %s.',[s ext]);
end
end
try
feval(s,varargin{:});
% evalin('caller', [s ';']);
catch e
cd(cur);
rethrow(e);
end
else
cd(cur)
rehash;
error('MATLAB:run:FileNotFound','%s not found.',script)
end
cd(cur)
rehash;
else
error('MATLAB:run:FileNotFound','%s not found.',script)
end
else
if exist(script,'file')
evalin('caller',[script ';']);
else
error('MATLAB:run:FileNotFound','%s not found.',script)
end
end
end
Jak duża jest biblioteka i ile pracy zamierzasz z nią zrobić? Jak często chcesz wywoływać jego funkcje z kodu? Czy w bibliotece jest kod OO? –