出現(xiàn)這個(gè)錯(cuò)誤一般都是在for循環(huán)中,或者在矩陣的賦值過(guò)程中,出現(xiàn)這個(gè)錯(cuò)誤后你需要做以下工作: 一,查看矩陣A的維數(shù),在MATLAB主窗口中輸入size(A),查看矩陣的維數(shù) 二,檢查你現(xiàn)在的賦值語(yǔ)句,或者循環(huán)迭代到錯(cuò)誤出現(xiàn)時(shí)A(M,N)的角標(biāo),查看此時(shí)M
在MATLAB主窗口輸入
Index exceeds matrix dimensions.翻譯成中文就是 指數(shù)超過(guò)矩陣維度。 意思就是,你矩陣加入定義的矩陣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),回車,會(huì)出現(xiàn)錯(cuò)誤。
引用矩陣元素超過(guò)界限了。比如矩陣A是4*4的,你卻引用了A(4,5),顯然是不存在的。
那是為什么呢?
j取值超出A的長(zhǎng)度了。 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,那就會(huì)提示這個(gè)錯(cuò)誤。
檢查現(xiàn)在的賦值語(yǔ)句,或者循環(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)過(guò)某些運(yùn)算之后代入矢量的下表中,就會(huì)引起越界。
運(yùn)行同樣會(huì)出現(xiàn)錯(cuò)誤,
MATLAB 調(diào)試程序的方法是,在適當(dāng)?shù)奈恢迷O(shè)置斷點(diǎn),然后運(yùn)行程序,程序會(huì)在斷點(diǎn)處停下來(lái)(當(dāng)然,前提是在斷點(diǎn)的前面沒(méi)出錯(cuò)),然后你可以查看以及修改變量的值,然后決定是否繼續(xù)以及繼續(xù)運(yùn)行的方式(單行,跟蹤進(jìn)入函數(shù),等等)。 你現(xiàn)在的問(wèn)題
從上面可以看出當(dāng)i=7時(shí),調(diào)用A(7)便出現(xiàn)了錯(cuò)誤,那么就可以再去檢查循環(huán)范圍過(guò)程是否出錯(cuò),錯(cuò)誤就會(huì)得到解決。
只說(shuō)那幾個(gè)變量沒(méi)用,關(guān)鍵是,input0和 virtual_input是什么樣的數(shù)組?
擴(kuò)展閱讀,以下內(nèi)容您可能還感興趣。
matlab 求大神解決問(wèn)題 Index exceeds matrix dimensions.的問(wèn)題 救命啊
樓上說(shuō)得是對(duì)的。
就是說(shuō),比如數(shù)組只有10個(gè)元素,而你訪問(wèn)它的第11個(gè)元素,就發(fā)生越權(quán)。
或者你的角標(biāo)小于零,或小數(shù)之類的,都會(huì)出現(xiàn)這種問(wèn)題。
不是說(shuō)數(shù)組超出最大范圍,當(dāng)然MATLAB中,數(shù)組也有*的,就是說(shuō)一個(gè)數(shù)組最大只能是多少個(gè)字節(jié)。可以參看memory函數(shù)。
0追問(wèn)你能改改嗎?
請(qǐng)問(wèn) matlab調(diào)試程序時(shí)出現(xiàn)以下錯(cuò)誤??? Index exceeds matrix dimensions. 怎么解決呢 謝謝回答哦
指針超過(guò)矩陣維數(shù),一種可能是矩陣centroids只有一列,另一種可能是centroids(:,1)和centroids(:,2)的長(zhǎng)度不等,你用size(centroids(:,1)),size(centroids(:,2))看看它們維數(shù)是否一樣就知道了
在matlab仿真中Index exceeds matrix dimensions.是什么錯(cuò)誤
把你問(wèn)題提示發(fā)出來(lái)看看!你可以根據(jù)問(wèn)題提示改正程序的 !追問(wèn)??? 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沒(méi)有對(duì)啊?
運(yùn)行matlab中的plot語(yǔ)句 出現(xiàn)Index exceeds matrix dimensions
這一句代碼:
X(10)=x(9)-R11*cos(pi/3-S);
x該小寫,寫成大寫了,使x只有9個(gè)元素,所以超出索引范圍。追問(wèn)Undefined function 'Plot' for input arguments of type 'double'
改完又出現(xiàn)了這個(gè)問(wèn)題,還需要麻煩大神幫忙看一下?。?p class="jjwyds">Index exceeds matrix dimensions 一組輸入五組輸出BP神經(jīng)網(wǎng)絡(luò)
Index exceeds matrix dimensions指的是你引用的數(shù)組下標(biāo)超過(guò)了該數(shù)組的實(shí)際維數(shù)。
在matlab里,具體報(bào)錯(cuò)信息都會(huì)明確告訴你是哪一行錯(cuò)了,命令窗口里會(huì)顯示一個(gè)紅色的超鏈接,點(diǎn)擊帶橫線的Line:xxx即可直接轉(zhuǎn)到錯(cuò)誤行,這樣排查起錯(cuò)誤就容易的多。不然你這樣堆一堆程序在上面,很難看出錯(cuò)誤在哪。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com