本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

which

定位函数和文件

说明

示例

which item 显示 item 的完整路径。

  • 如果 item 是 MATLAB® 代码文件(.m.mlx.p 扩展名)中的一个 MATLAB 函数,或者是保存的 Simulink® 模型(.slx.mdl 扩展名),则 which 显示相应文件的完整路径。item 必须位于 MATLAB 路径中。

  • 如果 item 为已加载的 Java® 类中的方法,则 which 将显示该方法的程序包、类和方法名。

  • 如果 item 为工作区变量,则 which 显示一条消息,将 item 标识为变量。

  • 如果 item 是加载到 Simulink 中但未保存的 Simulink 模型,则 which 显示一条消息,将 item 标识为新的 Simulink 模型。

  • 如果 item 是包括扩展名的文件名并且位于当前工作文件夹或 MATLAB 路径中,则 which 将显示 item 的完整路径。

如果 item 是一个重载的函数或方法,则 which item 只返回找到的第一个函数或方法的路径。

示例

which fun1 in fun2 显示由文件 fun2 调用的函数 fun1 的路径。使用此语法可确定是调用了局部函数还是该路径中的函数。此语法不能定位嵌套函数。

示例

which ___ -all 显示 MATLAB 路径上带有所请求名称的所有项的路径。此类项包括实例化类的方法。which ___ -all 还显示已隐式添加到路径的特殊文件夹中的任何文件。有关这些特殊文件夹的详细信息,请参阅 MATLAB 搜索路径。您可以将 -all 与任何先前语法的输入参数结合使用。

示例

str = which(item)item 的完整路径返回到 str

示例

str = which(fun1,'in',fun2) 返回由文件 fun2 调用的函数 fun1 的路径。使用此语法可确定是调用了局部函数还是该路径中的函数。此语法不能定位嵌套函数。

示例

str = which(___,'-all')which 的结果返回到 str。您可以将此语法与先前语法组中的任何输入参数结合使用。

示例

全部折叠

定位 pinv 函数。

which pinv
matlabroot\toolbox\matlab\matfun\pinv.m

pinv 位于 MATLAB 的 matfun 文件夹中。

您也可以使用函数语法将路径返回到 str。使用函数格式的 which 时,请将所有输入参数包括在单引号中。

str = which('pinv');

创建 Java® 类的实例。这会将该类加载到 MATLAB® 中。

myDate = java.util.Date;

定位 setMonth 方法。

which setMonth
setMonth is a Java method  % java.util.Date method

查找私有文件夹中的 orthog 函数。

which private/orthog
matlabroot\toolbox\matlab\elmat\private\orthog.m  % Private to elmat

MATLAB 显示 toolbox/matlab/elmat/private 子文件夹中 orthog.m 的路径。

确定 area.m 调用了哪个 parseargs 函数。

which parseargs in area
% Local function of area
matlabroot\toolbox\matlab\specgraph\area.m (parseargs)  

您也可以使用函数语法将路径返回到 str。使用函数格式的 which 时,请将所有输入参数包括在单引号中。

str = which('parseargs','in','area');

假设您有一个 matlab.io.MatFile 对象,它对应于示例 MAT 文件 'topography.mat'

matObj = matfile('topography.mat');

显示使用输入参数 (matObj) 调用的 who 的实施路径。

which who(matObj)
% matlab.io.MatFile method
matlabroot\toolbox\matlab\iofun\+matlab\+io\MatFile.m  

将结果存储到变量 str 中。

str = which('who(matObj)')
str =
matlabroot\toolbox\matlab\iofun\+matlab\+io\MatFile.m

如果未指定输入参数 (matObj),则 which 将仅返回已发现的第一个函数或方法的路径。

which who
built-in (matlabroot\\toolbox\matlab\general\who)

显示 MATLAB 路径上带有名称 fopen 的所有项的路径。

which fopen -all
built-in (matlabroot\toolbox\matlab\iofun\fopen)
% serial method
matlabroot\toolbox\matlab\iofun\@serial\fopen.m

% icinterface method
matlabroot\toolbox\shared\instrument\@icinterface\fopen.m  
matlabroot\toolbox\instrument\instrument\@i2c\fopen.m      

which 的结果返回到 str

查找私有文件夹中的 orthog 函数。必须使用函数格式的 which,并将所有参数置于括号和单引号中。

str = which('private/orthog','-all');
whos str
  Name      Size            Bytes  Class    Attributes

  str       1x1               270  cell               

输入参数

全部折叠

要定位的函数或文件,指定为字符向量或字符串标量。使用函数格式的 which 时,请将所有 item 输入括在单引号或双引号中。item 可以为下列格式之一。

item 输入的格式要显示的路径
fun

显示 fun 的完整路径,它可以是 MATLAB 函数、Simulink 模型、工作区变量、已加载的 Java 类中的方法或包括文件扩展名的文件名。

要显示没有文件扩展名的文件的路径,请键入 which file.(文件名后面的句点是必需的)。使用 exist 检查任何其他位置是否存在文件。

/fun

将搜索范围限制为位于搜索路径中的名为 fun 的函数。例如,which /myfunction 显示 myfunction.m 函数的完整路径,但不显示具有相同名称的内置函数或 JAVA 函数。

private/fun限制搜索名为 fun 的私有函数。例如,which private/orthogwhich('private/orthog') 显示父文件夹的 /private 子文件夹中 orthog.m 的路径。

fun(a1,...,an)

显示使用输入参数 a1,...,an 调用时函数 fun 的实施路径。使用此语法可查询重载函数。请参阅示例:定位使用指定输入参数调用的函数

数据类型: char | string

要定位的函数,指定为字符向量或字符串标量。fun1 可以是函数名称,也可以是 fun(a1,...,an) 形式。有关 fun(a1,...,an) 形式的详细信息,请参阅定位使用指定输入参数调用的函数

使用函数格式的 which 时,请将所有 fun1 输入括在单引号或双引号中,例如 which('myfun1','in','myfun2')

数据类型: char | string

调用文件,指定为字符向量或字符串标量。fun2 可以是文件名称,也可以是 fun(a1,...,an) 形式。有关 fun(a1,...,an) 形式的详细信息,请参阅定位使用指定输入参数调用的函数

使用函数格式的 which 时,请将所有 fun2 输入括在单引号或双引号中,例如 which('myfun1','in','myfun2')

数据类型: char | string

输出参数

全部折叠

函数或文件位置,以字符向量或字符向量元胞数组(如果使用 '-all')形式返回。

  • 如果 item 为工作区变量,则 str 为字符向量 'variable'

  • 如果 str 是字符向量元胞数组,则 str 的每一行标识 which 的一个结果。结果按照函数优先顺序进行排序。如果有遮蔽的结果,您不应依赖 str 中被遮蔽的函数和方法的顺序。要确定结果是否被遮蔽,请以不指定 str 的方式调用 whichwhich 会通过 % Shadowed 注释来指示遮蔽的结果。

局限性

  • 未加载类时,仅当方法已在 @ 文件夹的单独文件中进行了定义并且不在任何程序包中时,which 才会查找这些方法。

提示

  • 有关 MATLAB 在调用函数时如何使用作用域和优先级的详细信息,请参阅 函数优先顺序

在 R2006a 之前推出