亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

下標索引必須是實數正整數或邏輯,泛型解。

下標索引必須是實數正整數或邏輯,泛型解。

阿波羅的戰車 2019-05-30 17:33:46
下標索引必須是實數正整數或邏輯,泛型解。以下錯誤經常發生:下標指數必須是實數正整數或邏輯值。我發現了很多關于這方面的問題,但沒有一個真正通用的答案。因此,我希望有一個一般性的解決辦法來處理這個問題。
查看完整描述

3 回答

?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

下標指數必須是實數正整數或邏輯值。

在幾乎所有情況下,此錯誤都是由以下兩個原因之一引起的。幸運的是,這方面有一個簡單的檢查。

首先,確保您位于發生錯誤的行,這通??梢酝ㄟ^使用dbstop if error在運行您的函數或腳本之前?,F在我們可以檢查第一個問題:

1。在某個地方,無效索引用于訪問變量。

查找每個變量,并查看它們是如何被索引的。被索引的變量通常以下列形式之一存在:

variableName(index,index)variableName{index,index}variableName{indices}(indices)

現在只需查看括號之間的內容,并選擇每個索引。然后擊中f9來評估結果并檢查它是真正的正整數還是邏輯的。視覺檢查通常是足夠的(請記住,可接受的值是真實的、虛假的或1,2,3,.但不是0),但是對于大型矩陣,您可以使用如下isequal(index, round(index)),或者更準確地說isequal(x, max(1,round(abs(x))))來檢查真正的正整數。檢查可以使用的類class(index)如果值全部為“true”或“false”,則應返回“邏輯”。

確保檢查每個索引,甚至那些看起來不尋常的索引,如下面的示例所示。如果所有索引都簽出,您可能面臨第二個問題:

2。函數名已被用戶定義的變量遮蔽。

MATLAB函數通常有非常直觀的名稱。這很方便,但有時會導致意外重載(內置)函數,例如創建一個與函數同名的變量。max = 9對于剩下的腳本/函數,Matlab將考慮max作為變量而不是函數max所以,如果您嘗試這樣的操作,就會得到這個錯誤。max([1 8 0 3 7])因為現在Matlab沒有返回該向量的最大值,而是假設您正在嘗試對該變量進行索引。max0是無效索引。

為了檢查您擁有的變量,您可以查看工作區。然而,如果您正在尋找一種系統的方法,這里有一個:

對于后面有括號的每一個字母或單詞()而且在第一步中還沒有確定有適當的指數。檢查它是否實際上是一個變量。這可以很容易地通過使用which.


實例

無效索引的簡單出現

a = 1;b = 2;c = 3;a(b/c)

在這里我們將評估b/c發現它不是一個很好的四舍五入的數字。

無效指數的復雜發生

a = 1;b = 2;c = 3;d = 1:10;a(b+mean(d(cell2mat():c)))

我建議從內到外工作。因此,首先評估被索引的最內部變量:d。結果證明cell2mat():c,很好地計算為整數。然后評估b+mean(d(cell2mat():c))并發現我們沒有整數或邏輯作為索引a.

在這里我們將評估b/c發現它不是一個很好的四舍五入的數字。

重載函數

which mean % some directory\filename.m

你應該看到這樣的東西來確認某物是一個函數。

a = 1:4;b=0:0.1:1;mean(a) = 2.5;mean(b);

我們在這里看到mean不小心被分配給?,F在我們得到:

which mean% mean is a variable.


查看完整回答
反對 回復 2019-05-30
?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

在Matlab(和大多數其他編程語言)中,乘法符號必須始終被寫入。當你上數學課的時候,你可能學會了寫東西。a(a+a)而不是a*(a+a),這在MATLAB中是不一樣的。第一個是索引或函數調用,第二個是乘法。

>> a=0a =

     0>> a*(a+a)ans =

     0>> a(a+a)Subscript indices must either be realpositive integers or logicals.


查看完整回答
反對 回復 2019-05-30
  • 3 回答
  • 0 關注
  • 1739 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號