如何使用与用户定义函数同名的MATLAB工具箱函数

时间:2015-11-18 09:02:17

标签: matlab

我遇到了findpeaks函数的问题,此函数位于信号处理工具箱中,并且程序还有另一个版本(用户定义的函数)。我需要在信号处理工具箱中调用on而不是用户定义的一个,我也不能重命名用户定义的函数有很多原因。任何人都可以帮我调用工具箱功能。

2 个答案:

答案 0 :(得分:10)

MATLAB使用的优先顺序在help pages中描述。它声明当前文件夹(9.)中的函数优先于路径(10.)中其他函数。然后,选择路径中函数的第一次出现。这允许许多可能的解决方案:

<强> 1。 cd到文件夹

一个非常简单的方法就是将当前工作空间目录更改为您需要调用的函数的文件夹,即cd或更改为用户定义函数所在的位置,或cd到工具箱路径。 注意:这是相当不优雅的,但有时可能是最简单的解决方案。

<强> 2。重新排序路径

如前所述,MATLAB选择了路径中第一次出现的函数。因此,您可以对路径变量进行重新排序,因此最后显示用户定义函数所在的文件夹。可以使用path函数查看和操作路径变量。 注意:然后您只能调用工具箱功能。否则你必须再次走这条路。

第3。功能句柄

如果您需要能够同时调用这两个函数,那么为两个版本创建函数句柄会很有用。为此,您必须cd进入定义函数的文件夹,并在那里创建一个新句柄:

cd('path/to/userdefined/function')
userFindPeaks = @findpeaks;
cd('path/to/MATLAB/installation/toolbox/signal/signal')
toolboxFindPeaks = @findpeaks;

然后,您可以使用feval调用这些函数。

当然,正如Adriaan在评论中提到的那样,最好将已定义函数的名称用于您自己的函数或变量名称。

答案 1 :(得分:2)

我只是来这里寻找相同的东西...我最终使用了builtinhttps://uk.mathworks.com/help/matlab/ref/builtin.html

[y1,...,yn] = builtin(function,x1,...,xn)

@arr_sea实际上在其中一个在不同上下文中使用此功能的折叠注释中发布了link