在MATLAB中创建与内置函数同名的函数

时间:2014-11-25 02:48:03

标签: matlab function

gpuArray是一个用于在matlab中在GPU上创建数组的函数。这里我并不总是想使用gpuArray,所以我编写了一个名为gpuArray(下面)的函数来在必要时返回一个普通矩阵,所以我不需要更改代码。我已经将此功能添加到路径中。但是当我调用gpuArray函数时,它仍然返回一个gpuArray .....有谁知道为什么....非常感谢!

function A = gpuArray(A)

2 个答案:

答案 0 :(得分:2)

这是......不是最好的主意。具有相同名称的多个函数最终会导致相当多的歧义,即将代码中的搜索+替换为具有唯一名称的备用函数不会导致。但如果你坚持这样做,那么你需要意识到MATLAB如何搜索函数。订单是(来自http://au.mathworks.com/help/matlab/matlab_prog/function-precedence-order.html):

  1. 导入的包函数

  2. 当前函数中的嵌套函数

  3. 当前文件中的本地功能

  4. 私人职能

  5. 对象功能

  6. @文件夹中的类构造函数

  7. 当前文件夹中的功能

  8. 路径上其他位置的功能,按照外观顺序

  9. 因此,为了确保您的函数优先于内置函数,它需要在该列表上更高。您可以将函数作为子函数包含在当前文件(#2或#3)中,私有函数(#4),创建类并使用这些函数(#5和6),将函数放在同一个函数中将文件夹作为调用它的代码(#7)或确保您的函数位于搜索路径中比内置函数(#8)更高的文件夹中。我怀疑你的\Documents\MATLAB文件夹或你的gpuArray函数所在的文件夹实际上比内置函数低,所以上面的#8失败了。您可以在搜索路径中移动该文件夹的位置,或者更好的做法是将函数名称更改为唯一的名称,并更改调用它的代码。

答案 1 :(得分:1)

你应该总是能够键入"哪个gpuArray"找出" gpuArray" Matlab将调用。我假设它不会指向你的。

要尝试让Matlab使用您的gpuArray,您应该尝试将函数的路径添加到Matlab路径。尝试类似:

%add the path to *my* gpuArray function
addpath('C:\MyDirectory\SomeOtherDirectory\MyMfiles\');
祝你好运!