MATLAB 索引陣列時,如果使用不是正整數或邏輯值的索引值時,就會發生此報錯。
以下是一些導致此錯誤時的建議: (建議學習:web/
####4122》)前端11 )仔細檢查索引值是否為正整數。 MATLAB 中的索引不能為 0,一般情況下從1開始。 ######2)如果使用邏輯變數索引,請確保索引數組類型為邏輯變量,而不是由1和0組成的double數組。也可以在索引前,將double數組轉換為邏輯數組。 #########例如:######
A = [1 2 3 4; 5 6 7 8]; ind_double = [0 1 0 1; 0 1 0 1]; ind_logical = logical(ind_double); A(ind_logical)###對索引數組,可以透過whos 函數查看資料類型,例如:###
whos ind_double whos ind_logical###3)如果使用浮點演算法來計算索引數組, 則數組值可能不是整數精度。如果知道索引值非常接近整數,則可以用round 函數,例如:###
A = [1 2 3 4; 5 6 7 8]; ind_float = 2.00001; ind_int = round(ind_float); A(ind_float)###4)當定義了一個與MATLAB 內建函數重名的變數時,該函數會被覆寫,於是產生相同的報錯(呼叫函數的傳參和陣列索引都使用相同的括號),例如:###
max = rand(5); A = rand(5); max(A)###此時,需要另外分配變數名,並清除衝突的變數名稱:###
B = max; clear max max(A)
以上是數組索引必須為正整數或邏輯值的詳細內容。更多資訊請關注PHP中文網其他相關文章!