MATLAB中which函数用法

MATLAB which函数定位功能详解

目录

语法

说明

示例

定位 MATLAB 函数

定位已加载的 Java 类中的方法

定位私有函数

确定是否调用了局部函数

定位使用指定输入参数调用的函数

定位具有指定名称的所有项

返回路径名称


        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 在调用函数时如何使用作用域和优先级的详细信息,可以参考函数优先顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值