我遇到了findpeaks这个函数的问题,这个函数在信号处理工具箱中,而且程序还有另一个版本(用户自定义函数).我需要在信号处理工具箱中调用on而不是用户定义的一个,我也不能重命名用户定义的函数有很多原因.任何人都可以帮助我调用工具箱功能.
hba*_*rts 10
MATLAB使用的优先顺序在其帮助页面中描述.它声明当前文件夹(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;
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用调用函数feval.
当然,正如Adriaan在评论中提到的那样,最好不要将已定义函数的名称用于自己的函数或变量名.