Can I call a function defined within another function .m file?
13 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Paul
am 21 Jun. 2018
Beantwortet: Guillaume
am 21 Jun. 2018
Hello. Consider a file titled giveA.mat :
function A = giveA(argA)
% Main function
b = giveB(argB);
...
end
function b = giveB(argB) % defined within one file
% simple sub-function
end
% End of file
I'd like to call giveB() somewhere else in the code, but it would be very convenient for me to keep this function as is.
Is there a syntax which will allow this, i.e. can I call giveB() from, say someOtherFunction(). I expect something like
b = givA(argA)/giveB(argB)
or
b = giveA(argA)>giveB(argB)
as this is how Matlab displays location of giveB() in error messages.
0 Kommentare
Akzeptierte Antwort
Guillaume
am 21 Jun. 2018
As is, it is not possible. Local functions can only be accessed from within the files where they are defined.
The only way to export a local function is to pass a handle to it from the main function of the m file, so you would have to modify your giveA to return a handle to giveB, which would not be compatible with your desired syntax.
What you could do is to wrap both functions in a class:
classdef FunContainer
methods (static)
function A = giveA(argA)
%...
end
function B = giveB(argB)
%...
end
end
end
which you can use as
b = FunContainer.giveA(A) / FunContainer.giveB(B)
0 Kommentare
Weitere Antworten (2)
Fangjun Jiang
am 21 Jun. 2018
No. It is a local function. If it needs to be used outside, it has to be saved in a separate .m file.
0 Kommentare
OCDER
am 21 Jun. 2018
The next closest thing is to define an object class with static methods (give.m)
%give.m
classdef give
methods(Static)
function A = A(argA)
A = argA;
disp('I gave A');
end
function B = B(argB)
B = argB;
disp('I gave B');
end
end
end
To use "giveA", use "give.A" instead.
D = give.A(3)/give.B(10);
0 Kommentare
Siehe auch
Kategorien
Mehr zu Function Creation finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!