我有一個在m文件中定義的local function。例如:從命令行調用本地函數
% begining of public_function.m file
function fh = public_function()
%
% do some computation...
fh = @local_function; % return function handle to local function defined below
function y = local_function(x)
%
% a local function inside public_function.m file
%
% some manipulation on x
y = x;
% end of public_function.m file NOTE THAT local_function is NOT nested
現在,我想調用命令行local_function
(而不是從public_function
)。我能做到這一點利用public_function
返回的功能句柄:
>> fh = public_function(); % got handle to local_function
>> y = fh(x); % calling the local function from command line :-)
我的問題:
是否有任何其他方式(除了明確地傳遞給函數句柄)來調用命令行的本地函數(或其他m文件/功能)?
更確切地說,我想要一個方法來訪問文件中的任何本地函數(前提是我知道它的名字)。所以,如果我有public_function.m
文件(和函數)和我知道local_function
是該文件的本地,有沒有辦法從命令行訪問local_function
?
您可以通過子功能的名稱作爲主函數的參數。查看第二個示例:http://www.mathworks.de/support/solutions/en/data/1-19LN6/?solution=1-19LN6 – 2013-03-17 15:11:20
您是否在matlab文件交換中檢查了mklib?它會自動創建句柄到您列出的文件中的任何本地函數作爲函數參數:http://www.mathworks.de/matlabcentral/fileexchange/7597-mklib-a-pedestrian-function-library-loader-generator – 2013-03-18 15:17:40
更好的問題這就是爲什麼如果您迫切需要從m文件之外調用該函數,那麼您將該函數作爲本地函數。使一些東西成爲本地功能的想法是限制它的範圍。也許你應該把它放在自己的m文件中,或者把它變成一個私有函數。我建議看看[這個問題](http://stackoverflow.com/q/3569933/52738)瞭解更多信息。 – gnovice 2013-10-16 18:36:14