2013-01-10 156 views
1

我在一個名爲conditionals.m文件寫了如下的功能:八度:指數超過矩陣尺寸

function result = conditionals(category, feature) 

result=5; 

end 

我調用此函數從八度的命令行:

v=conditionals(3,4) 

我得到以下錯誤:

error : A(I) : Index exceeds matrix dimension. 

這裏有什麼錯?

回答

4

錯誤:

error : A(I) : Index exceeds matrix dimension.

表示倍頻認爲conditionals是一個矩陣,而不是一個函數。

Octave可能不知道conditionals是一個函數 - 而是將其視爲矩陣。

您是否檢查過函數是否在Octave的搜索路徑中?

0

這適用於我。

octave> function result = conditionals (category, feature) 
> result = 5; 
> endfunction 
octave> v = conditionals (3, 4) 
v = 5 

錯誤提示您有一個與函數名稱相同的變量。在Octave提示符下鍵入whos以查看已定義變量的列表。如果你看到一個名爲conditionals,與clear conditionals

還要去掉它,如果條件語句是conditionals.m文件,請確保它的功能搜索路徑。在Octave提示符處運行path以查看函數搜索路徑。在命令提示符下運行which conditionals以查看函數的位置。

0

它也發生在我身上,它可以發生在任何命令上,而不管命令名稱如何。當我運行PS1(">>");來更改Ovtave中的命令提示符時,我得到了同樣的錯誤。

octave-3.2.3.exe:9> PS1(">>");

error: A(I): Index exceeds matrix dimension.

正如別人也提到的,當有一個參數具有相同的命令名稱時,會觸發此錯誤。當我們錯誤地輸入錯誤語法的命令時,會發生這種情況,因此,八度運行命令並生成一個變量,其命令名稱會超出內部命令的範圍。

您可以通過who命令驗證此狀態。如果您在這裏可以看到與您的命令相同的變量名稱,則必須將其刪除。使用clear variable_name刪除變量。

這是我輸出的PS1命令。

enter image description here

希望它能幫助。