我安装了一些Matlab-Toolboxes。在我的Matlab版本中,其中一个Toolbox-Functions与另一个相撞。在这种情况下,它是粗麻布的。我想使用symbolic-Toolbox的粗体函数。
在C / C ++中,函数被多次定义为cos函数,我仍然想使用“标准”cos函数,我可以写:
std::cos(x);
matlab中有类似内容吗?
答案 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将执行它在路径中找到的第一个函数。
我仍然会推荐使用显式声明的第一个解决方案,因为如果你有很多重载函数,更改路径顺序可能会搞乱其他函数调用。