在MATLAB中调用特定工具箱中的重载函数

时间:2014-11-19 12:23:37

标签: matlab

我安装了一些Matlab-Toolboxes。在我的Matlab版本中,其中一个Toolbox-Functions与另一个相撞。在这种情况下,它是粗麻布的。我想使用symbolic-Toolbox的粗体函数。

在C / C ++中,函数被多次定义为cos函数,我仍然想使用“标准”cos函数,我可以写:

std::cos(x);

matlab中有类似内容吗?

2 个答案:

答案 0 :(得分:3)

如果您有重载方法并且想要调用内置方法,则可以使用函数builtin。来自official documentation

  

builtin(function,x1,...,xn)执行内置函数   输入参数x1到xn。使用内置来执行原始   从重载函数的方法内置。上班   正确地说,你必须永远不要使内置过载。

使用它的语法是:

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

友好的建议:如果你想尝试重载内置(“嗯,我想知道会发生什么”),记得先保存一些东西。

答案 1 :(得分:1)

以与c / c ++描述非常类似的方式,您可以通过首先添加工具箱的名称来使用特定的工具箱功能:ToolboxName\function2call()

首先使用which命令确保使用特定的调用语法从哪个工具箱加载哪个函数。

由于我没有工具箱,你提到我将使用经典的fopen函数作为例子。

在没有任何其他参数的情况下调用的第一个fopen函数将是内置函数,用于将句柄返回给文件。实际上,which命令确认:

>> which fopen
built-in (C:\TLAB13a\toolbox\matlab\iofun\fopen)

现在假设我想使用fopen函数打开一个串口,我需要在调用fopen之前加上工具箱/对象的名称,如下所示:{{1 }}。让我们首先确保这种调用方式指向正确的函数:

serial\fopen
宾果!

为了确保在调用这些函数时这是有效的,让我们将它们称为真实的(带有虚拟参数):

>> which serial\fopen
C:\TLAB13a\toolbox\matlab\iofun\@serial\fopen.m  % serial method

有效。第一次简单调用>> fopen('toto') ans = -1 >> serial\fopen('toto') Error using serial (line 72) The PORT must be specified. 会返回fopen('toto'),因为找不到名为“toto”的文件。
第二次调用-1会导致错误,因为未定义串行端口,但调用了正确的函数。


编辑: 您还可以通过重新排序Matlab路径来覆盖Matlab获取函数的顺序。如果将符号工具箱放在路径中的另一个工具箱之前,那么在没有显式信息的情况下调用它时,Matlab将执行它在路径中找到的第一个函数。

我仍然会推荐使用显式声明的第一个解决方案,因为如果你有很多重载函数,更改路径顺序可能会搞乱其他函数调用。