Matlab 之索引必須是正整數或邏輯變量


最近用matlab編寫程序時,這個錯誤讓我郁悶了很長時間。明明寫的是一個循環,第一個循環可以正常運轉,而第二個循環則會報上述的錯誤;

而且單步調試運行也不會出錯,只有整體運行便會報錯;經過多遍仔細的檢查,感覺不會出現簡單地索引邏輯的問題;

終於發現是自己在定義函數時犯了一個簡單地錯誤:[fitness,...]=fitness(x,y,zx....),輸出中fitness為矩陣形式;

如上自己定義函數時,某輸出變量和函數的名字是一樣的,這樣就會造成下一步循環時,電腦無法識別你fitness到底是函數,還是變量

總結來看,電腦應該是把fitness當做了變量,而fitness剛好是個矩陣,這樣就會把后續調用函數的過程看作fitness矩陣的變量提取過程。

但是矩陣變量提取只能輸入行和列,且必須為整數;

剛好輸入變量都不是矩陣調用內部值的正確方法。因此會報錯索引必須是正整數或邏輯變量

試想,如果fitness函數只有兩個整數變量,那程序則可以允許,結果就會很離譜的哦,哈哈,大家多注意吧!

千萬不要把輸出變量和函數名稱一樣!

比如,max=max(A(:,1));max取A矩陣第一列的最大值;此時電腦已經無法識別你的max是啥了,電腦肯定會把max當做變量,max函數已經從它的世界消失了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM