2011-08-31 118 views
1

我的功能絕對有效;它已經過測試,並且一度被認可。爲什麼Matlab不能看到我的功能?

這裏的函數原型:

function [X Y] = calculateEllipse(x, y, a, b, angle) 
%# Code here 
end 

下面是我從MATLAB終端進行呼叫:

calculateEllipse (612, 391, 107, 60, 331) 

這裏飛出錯誤我:

??? Undefined function or method 'calculateEllipse' for input arguments of 
type 'double'. 

現在,我100%的肯定,我在同一個目錄中的功能。我甚至用過

addpath('C:\path-to-function') 

確認。這只是不工作,我感到困惑。

任何幫助表示讚賞。

+5

你的函數文件叫calculateEllipse.m嗎? – Jeff

+1

找到使用'which calculateEllipse'調用的函數。有關更多詳細信息,請參閱[哪個](http://www.mathworks.ch/help/techdoc/ref/which.html)。 – zellus

+0

一定要接受一些答案,它可以幫助人們查看問題! –

回答

1

我可以想到這可能發生的幾個原因。

首先,正如Jeff所說,您可以命名文件'calcEllipse.m'而不是'calculateEllipse.m'。在這種情況下,您需要將函數重命名爲與保存的m文件相同。

其次,您還沒有添加正確的路徑。這是沒有理由給我的知識,否則一個錯誤。仔細檢查您是否已將路徑添加到正在保存的m文件中。一個簡單的方法來檢查,如果你輸入'calculateEll',然後按Tab鍵,自動完成工作?如果不是,你就不在路上。

希望這是你可以快速修復的東西之一!

2

加上傑夫所說的話;另一種可能性是你將函數放置在MATLAB安裝的某個地方。默認情況下,MATLAB不會爲新文件重新搜索自己的文件結構;它假定其內部文件結構保持不變。確保你保存的文件(正如Jeff指出的那樣,必須被命名爲calculateEllipse.m)在MATLAB安裝之外的某個地方。

http://www.mathworks.com/help/techdoc/matlab_env/f8-28521.html,或去MathWorks公司的網站和搜索

path cache 

以獲取更多信息。

5

總結其他帖子,這裏是確定問題原因的工作流程。

  1. 您輸錯了函數的名稱。檢查函數定義並確保它確實叫做calculateEllipse

  2. 將函數保存到名稱不同於函數名稱的文件中。檢查函數的文件名,並確保它與函數名稱匹配。

  3. 包含函數名稱的文件夾不在MATLAB路徑中。有幾種方法可以檢查這一點。輸入path查看當前路徑,或which calculateEllipse查找MATLAB正在使用該文件的位置。(如果有問題,那最後命令將顯示'calculateEllipse' not found.。需要注意的是addpath不會永久更新的路徑,所以當你關閉MATLAB,路徑將被重置。使用savepath這一點。

  4. 文件夾包含該功能是matlabroot子目錄這些文件夾保留爲完全成熟的工具箱;當你在這裏存放你的代碼不好的事情發生,請參閱Bob的答案更多信息

其他有用的東西來檢查是:

  1. 你可以調用存儲在同一個文件夾中的其他函數嗎?

  2. 如果將函數保存在不同的文件夾中,它會運行嗎?

+0

感謝您的幫助,對於遲到的回覆我感到抱歉。我輸入「which calculateEllipse」,它給了我路徑,但是說%沒有可用的許可證。然後我嘗試將代碼複製爲一個新的函數,並給它一個不同的名稱並收到相同的錯誤。有什麼建議麼? – user920761

1

的關鍵,這個問題是這樣的:%Has no license available。這意味着您嘗試使用的函數的目錄中的函數與您不擁有的工具箱中的函數具有相同的名稱。 MATLAB默認禁用整個目錄,而不僅僅是你不擁有的工具箱中同名的函數。這裏有一個例子:

目錄中的文件:

myfunction.m 
scoobydoo.m 
blackman.m 

如果我沒有自己的「信號處理工具箱」,那麼blackman.m將禁用整個目錄。

相關問題