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

2022-09-05 22:57:41 字數 622 閱讀 8798

最近用matlab編寫程式時,這個錯誤讓我鬱悶了很長時間。明明寫的是乙個迴圈,第乙個迴圈可以正常運轉,而第二個迴圈則會報上述的錯誤;

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

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

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

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

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

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

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

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

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

如何判斷scanf 輸入是int型 正整數

scanf 也有返回值,輸入正確時,返回正確讀入的引數個數,且為int 型 無引數正確讀入或檔案末尾錯誤,返回0或eof 利用其返回值判斷輸入是否為int,若輸入為字母 小數或其他特殊符號退出迴圈,如下 int main void int status,num 1 printf please inp...

三個正整數的和是乙個正整數 ,有多少種組合方法

由於可調功率儀器昂貴,所以用普通燈泡代替,但是只有小功率燈泡,在電量計量的時候需要大功率進行比較,所以想了辦法用多個燈泡代替,手中有95w 60w 40w燈泡,合計做出乙個1000w的功率儀器,所以有了下面的方法。三個正整數的和是乙個正整數 有多少種組合方法 我這裡三個數用的是 95 6040 和是...

面試題之10億正整數問題

全屏閱讀 收藏 10億個正整數,只有其中1個數重複出現過,要在o n 的時間裡面找出這個數,記憶體要盡可能少 小於100m 謝謝absolute同學提出的問題。部分解答 還有沒有完成的部分 首先看一下10億個正整數,正整數可以表示的範圍為1到2的31次方 1。10億也就是1 10 9,2 31次方 ...