MATLAB函数是否知道它们所定义的目录?

4

可能是重复问题:
在Matlab中找到当前m文件的位置

我想编写一个m文件,它将显示定义该函数的目录。

例如,如果函数foo.m放置在目录c:\ bar和c:\ foo中(文件的完整路径为c:\ bar \ foo.m或c:\ foo \ foo.m),这些目录最初都不在MATLAB路径上,则可以使用以下命令序列:

addpath("c:\bar");
foo

会产生以下结果:我位于目录c:\bar中

addpath("c:\foo");
foo

我所在的目录是c:\foo,该如何编写这样一个函数?

请问如何编写这样的功能?


@gnovice 我不认为这是重复的。OP正在询问类似于Matlab如何进行函数重载的内容(它使用不同的路径)。 - Pavan Yalamanchili
1
@Pavan:不,他没有。他是将每个函数单独添加到路径中,而不是同时添加(这将导致foo成为重载函数)。他特别询问一个函数如何知道它所在的目录,这已经在重复的问题中涵盖了。 - gnovice
抱歉,我完全没注意到。对不起。 - Pavan Yalamanchili
@Marc,你可以使用哪个foo。 - Pavan Yalamanchili
2个回答

6

你是否在寻找 mfilename 函数?可选的 fullpath 输入参数会返回调用该函数的 m 文件的完整路径。


2
Praetorian是正确的。您可能还对fileparts函数感兴趣。以下是应该能够实现您要求的代码。
function foo
fprintf('I am located in directory %s', fileparts(mfilename('fullpath')))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接