2014-11-25 91 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失敗。您可以在搜索路徑中移動該文件夾的位置,或者更好的辦法是將您的函數的名稱更改爲唯一的名稱並更改調用它的代碼。

相關問題