出現(xiàn)這個(gè)錯(cuò)誤一般都是在for循環(huán)中,或者在矩陣的賦值過程中,出現(xiàn)這個(gè)錯(cuò)誤后你需要做以下工作: 一,查看矩陣A的維數(shù),在MATLAB主窗口中輸入size(A),查看矩陣的維數(shù) 二,檢查你現(xiàn)在的賦值語句,或者循環(huán)迭代到錯(cuò)誤出現(xiàn)時(shí)A(M,N)的角標(biāo),查看此時(shí)M
在MATLAB主窗口輸入
Index exceeds matrix dimensions.翻譯成中文就是 指數(shù)超過矩陣維度。 意思就是,你矩陣加入定義的矩陣A是 3乘3的矩陣,你在程序里,寫了一個(gè) B=A(4,3); 這樣的話,Matlab就找不到這第四行第三列的數(shù)據(jù),因?yàn)槟愣x的A就三行三列; 比如如下
A=[1 2 3 4 5 6];
for s1=9:-1:1 for s2=1:5 s3=student2012(s1).score(s2); if s3
A(8),回車,會出現(xiàn)錯(cuò)誤。
引用矩陣元素超過界限了。比如矩陣A是4*4的,你卻引用了A(4,5),顯然是不存在的。
那是為什么呢?
j取值超出A的長度了。 i是從1到length(A) j始終比i大1,所以從2到length(A)+1了,超出范圍了。 循環(huán)那里用for i=1:length(A)-1就好了。
方法
查看矩陣A的維數(shù),在MATLAB主窗口中輸入size(A),查看矩陣的維數(shù)
首先要看提示錯(cuò)誤是在哪行,這個(gè)錯(cuò)誤很好排除,就是你的數(shù)組或者矩陣超了索引范圍,比如100個(gè)元素的數(shù)組,你索引到101,那就會提示這個(gè)錯(cuò)誤。
檢查現(xiàn)在的賦值語句,或者循環(huán)迭代到錯(cuò)誤出現(xiàn)時(shí)A(M,N)的角標(biāo),查看此時(shí)M/N是不是已經(jīng)超出了A的維數(shù)范圍。
這個(gè)情況引起的原因只有一個(gè) 那就是下標(biāo)越界。 檢查你的循環(huán)結(jié)構(gòu)吧,有時(shí)候循環(huán)變量的值經(jīng)過某些運(yùn)算之后代入矢量的下表中,就會引起越界。
運(yùn)行同樣會出現(xiàn)錯(cuò)誤,
MATLAB 調(diào)試程序的方法是,在適當(dāng)?shù)奈恢迷O(shè)置斷點(diǎn),然后運(yùn)行程序,程序會在斷點(diǎn)處停下來(當(dāng)然,前提是在斷點(diǎn)的前面沒出錯(cuò)),然后你可以查看以及修改變量的值,然后決定是否繼續(xù)以及繼續(xù)運(yùn)行的方式(單行,跟蹤進(jìn)入函數(shù),等等)。 你現(xiàn)在的問題
從上面可以看出當(dāng)i=7時(shí),調(diào)用A(7)便出現(xiàn)了錯(cuò)誤,那么就可以再去檢查循環(huán)范圍過程是否出錯(cuò),錯(cuò)誤就會得到解決。
只說那幾個(gè)變量沒用,關(guān)鍵是,input0和 virtual_input是什么樣的數(shù)組?
擴(kuò)展閱讀,以下內(nèi)容您可能還感興趣。
matlab 求大神解決問題 Index exceeds matrix dimensions.的問題 救命啊
樓上說得是對的。
就是說,比如數(shù)組只有10個(gè)元素,而你訪問它的第11個(gè)元素,就發(fā)生越權(quán)。
或者你的角標(biāo)小于零,或小數(shù)之類的,都會出現(xiàn)這種問題。
不是說數(shù)組超出最大范圍,當(dāng)然MATLAB中,數(shù)組也有*的,就是說一個(gè)數(shù)組最大只能是多少個(gè)字節(jié)。可以參看memory函數(shù)。
0追問你能改改嗎?
請問 matlab調(diào)試程序時(shí)出現(xiàn)以下錯(cuò)誤??? Index exceeds matrix dimensions. 怎么解決呢 謝謝回答哦
指針超過矩陣維數(shù),一種可能是矩陣centroids只有一列,另一種可能是centroids(:,1)和centroids(:,2)的長度不等,你用size(centroids(:,1)),size(centroids(:,2))看看它們維數(shù)是否一樣就知道了
在matlab仿真中Index exceeds matrix dimensions.是什么錯(cuò)誤
把你問題提示發(fā)出來看看!你可以根據(jù)問題提示改正程序的 !追問??? Index exceeds matrix dimensions.
Error in ==> getphi at 35
P1=P*v(:,1:rk);
Error in ==> klmi at 345
thetaC=thetaC+v2*getphi(DR0,v2'*b2'*x2,max(10,.1*norm(thetaC,1)));
Error in ==> hinflmi at 106
[Kcen,gopt,flag]=klmi(P,r,gopt,x1,x2,y1,y2,tolred);
Error in ==> lubang3 at 10
[gopt,k]=hinflmi(p,[2 4]);追答你的b1,b2沒有對啊?
運(yùn)行matlab中的plot語句 出現(xiàn)Index exceeds matrix dimensions
這一句代碼:
X(10)=x(9)-R11*cos(pi/3-S);
x該小寫,寫成大寫了,使x只有9個(gè)元素,所以超出索引范圍。追問Undefined function 'Plot' for input arguments of type 'double'
改完又出現(xiàn)了這個(gè)問題,還需要麻煩大神幫忙看一下!!
Index exceeds matrix dimensions 一組輸入五組輸出BP神經(jīng)網(wǎng)絡(luò)
Index exceeds matrix dimensions指的是你引用的數(shù)組下標(biāo)超過了該數(shù)組的實(shí)際維數(shù)。
在matlab里,具體報(bào)錯(cuò)信息都會明確告訴你是哪一行錯(cuò)了,命令窗口里會顯示一個(gè)紅色的超鏈接,點(diǎn)擊帶橫線的Line:xxx即可直接轉(zhuǎn)到錯(cuò)誤行,這樣排查起錯(cuò)誤就容易的多。不然你這樣堆一堆程序在上面,很難看出錯(cuò)誤在哪。