gpuArray是一个用于在matlab中在GPU上创建数组的函数。这里我并不总是想使用gpuArray,所以我编写了一个名为gpuArray(下面)的函数来在必要时返回一个普通矩阵,所以我不需要更改代码。我已经将此功能添加到路径中。但是当我调用gpuArray函数时,它仍然返回一个gpuArray .....有谁知道为什么....非常感谢!
function A = gpuArray(A)
答案 0 :(得分:2)
这是......不是最好的主意。具有相同名称的多个函数最终会导致相当多的歧义,即将代码中的搜索+替换为具有唯一名称的备用函数不会导致。但如果你坚持这样做,那么你需要意识到MATLAB如何搜索函数。订单是(来自http://au.mathworks.com/help/matlab/matlab_prog/function-precedence-order.html):
导入的包函数
当前函数中的嵌套函数
当前文件中的本地功能
私人职能
对象功能
@文件夹中的类构造函数
当前文件夹中的功能
路径上其他位置的功能,按照外观顺序
因此,为了确保您的函数优先于内置函数,它需要在该列表上更高。您可以将函数作为子函数包含在当前文件(#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\');
祝你好运!