2014-11-25 92 views
0

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

function A = gpuArray(A) 

回答

1

您应该始终能够键入“which gpuArray”来找出Matlab将调用哪个“gpuArray”。我假设它不会指向你的。

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

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

祝你好运!

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失败。您可以在搜索路径中移动该文件夹的位置,或者更好的办法是将您的函数的名称更改为唯一的名称并更改调用它的代码。

相关问题