目录
which函数的功能是定位函数和文件。
语法
which item
which fun1 in fun2
which ___ -all
str = which(item)
str = which(fun1,'in',fun2)
str = which(___,'-all')
说明
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 路径上带有所请求名称的所有项的路径,以及已隐式添加到该路径的特殊文件夹中的任何文件。这些项包括实例化类的方法。可以参考MATLAB 搜索路径。您可以将 -all 与任何先前语法的输入参数结合使用。
str = which(item) 将 item 的完整路径返回到 str。
str = which(fun1,'in',fun2) 返回由文件 fun2 调用的函数 fun1 的路径。使用此语法可确定是调用了局部函数还是该路径中的函数。此语法不能定位嵌套函数。
str = which(___,'-all') 将 which 的结果返回到 str。可以将此语法与先前语法组中的任何输入参数结合使用。
示例
定位 MATLAB 函数
定位 pinv 函数。
which pinv
matlabroot\toolbox\matlab\matfun\pinv.m
pinv 位于 MATLAB 的 matfun 文件夹中。
也可以使用函数语法将路径返回到 str。使用函数格式的 which 时,请将所有输入参数包括在单引号中。
str = which('pinv');
定位已加载的 Java 类中的方法
创建 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
matlabroot\toolbox\matlab\specgraph\area.m (parseargs) % Local function of area
也可以使用函数语法将路径返回到 str。使用函数格式的 which 时,请将所有输入参数包括在单引号中。
str = which('parseargs','in','area');
定位使用指定输入参数调用的函数
假设有一个 matlab.io.MatFile 对象,它对应于示例 MAT 文件 'topography.mat':
matObj = matfile('topography.mat');
显示使用输入参数 (matObj) 调用的 who 的实施路径。
which who(matObj)
matlabroot\toolbox\matlab\iofun\+matlab\+io\MatFile.m % matlab.io.MatFile method
将结果存储到变量 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\shared\instrument\@icinterface\fopen.m % icinterface method
matlabroot\toolbox\matlab\serial\@serial\fopen.m % serial method
matlabroot\toolbox\instrument\instrument\@i2c\fopen.m % i2c method
返回路径名称
将 which 的结果返回到 str。
查找私有文件夹中的 orthog 函数。必须使用函数格式的 which,并将所有参数置于括号和单引号中。
str = which('private/orthog','-all');
whos str
Name Size Bytes Class Attributes
str 1x1 262 cell
局限性
-
未加载类时,仅当方法已在 @ 文件夹的单独文件中进行了定义并且不在任何程序包中时,which 才会查找这些方法。
提示
-
有关 MATLAB 在调用函数时如何使用作用域和优先级的详细信息,可以参考函数优先顺序。
MATLAB which函数定位功能详解
8136

被折叠的 条评论
为什么被折叠?



