3

是否有可能检索包含由函数句柄表示的函数的文件的绝对路径?例如:

%child folder containing test_fun.m file
handle = @test_fun
cd ..

%root folder - test_fun not available
path = GETPATHFROMHANDLE(handle)

MATLAB中是否有等效的GETPATHFROMHANDLE函数?这似乎是通过简单的功能,但我无法解决。我知道func2strwhich功能,但在这种情况下不起作用。

4

1 回答 1

7

函数句柄(即function_handle的对象)有一个名为 的方法functions,它将返回有关句柄的信息,包括相关文件的完整路径:

>> fs = functions(h)
fs = 
    function: 'bar'
        type: 'simple'
        file: 'C:\Program Files\MATLAB\R2013b\toolbox\matlab\specgraph\bar.m'
>> fs.file
ans =
C:\Program Files\MATLAB\R2013b\toolbox\matlab\specgraph\bar.m

由于 的输出functions是 a struct,这可以在一个命令中完成getfield

>> fName = getfield(functions(h),'file')
fName =
C:\Program Files\MATLAB\R2013b\toolbox\matlab\specgraph\bar.m

但是,如果将它们串在一起,则可以使用func2strand来获取文件名:which

>> h = @bar;
>> fName = which(func2str(h))
fName =
C:\Program Files\MATLAB\R2013b\toolbox\matlab\specgraph\bar.m
于 2013-12-17T01:01:56.490 回答