Re: [問題] 讀檔Index exceeds matrix dimensions

看板MATLAB作者 (宋代才女唱元曲)時間13年前 (2012/09/15 01:23), 編輯推噓1(1012)
留言13則, 2人參與, 最新討論串2/2 (看更多)
: 結果就是 : 當迴圈的第一次,也就是i = 1的時候,是完全正常的 : 可是第二次會直接錯,錯在這行 : ??? Index exceeds matrix dimensions. : folder = dir(folder_name); : 我以為是陣列大小的儲存問題,於是我加上了紫色那行,可是沒有用處 : 而我又做了以下三個嘗試: : (1) for改成while、if、switch...之類的,不過功能一樣所以沒差 : (2) 直接把folder改成folder_1、folder_2放在兩個不同的if : 兩次迴圈存檔的空間(記憶體)理應完全不同 : (所以不會有什麼覆蓋不覆蓋的問題了) : (3) ..我忘了我改什麼了XD 總之沒用 : 可是一樣都是 : ??? Index exceeds matrix dimensions. : folder = dir(folder_name); : 請問這是什麼問題?

不過我不曉得你的問題出在哪,code看起來是可以的
我剛剛測試,把程式碼給實際測試一遍,驚訝的發現 for i = 1:2 if i == 1 folder_name = 'D:\Brain\Left1~18\'; side = '13~18\'; elseif i == 2 folder_name = 'D:\Brain\Right1~15\'; side = '11~15\'; end folder_name = strcat(folder_name,side); folder = dir(folder_name); for x = 1:size(folder); b2 = folder(x,1).name; pic_name = strcat(folder_name,b2); I = imread(pic_name); (大量運算) end end 發現 把綠色括號給去掉就可以執行了囧 當然綠色括號裡面包含了一兩千行的東西, 所以光這樣去掉實在沒什麼意義啦... 可是我還是不瞭解,為什麼可以執行的程式 最外圍加上一個迴圈跑兩次,就會錯了呢? 不能執行的錯也就算了, 跑第一次一定對,跑第二次一定錯是什麼情況啊.............. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.25.118.144

09/19 20:54, , 1F
嘗試把 (大量運算) 寫成一個 function, 或是養成習慣
09/19 20:54, 1F

09/19 20:55, , 2F
把用完無 reuse 的 data clear 掉
09/19 20:55, 2F

09/19 20:56, , 3F
bug 有很多種,例如變數 i or x 在(大量運算) 裡重複出現
09/19 20:56, 3F

09/19 20:58, , 4F
或是原po使用了會讓 matlab 誤判的變數名稱 (ex: size)
09/19 20:58, 4F

09/20 20:16, , 5F
嗯..當然有可能是那樣沒錯 可是程式裡面我"只"加了一個
09/20 20:16, 5F

09/20 20:16, , 6F
框住所有內容的迴圈 也就只是讓它從一次變兩次這樣
09/20 20:16, 6F

09/20 20:17, , 7F
迴圈的變數當然是沒有重複的..這樣錯就讓人有點費解了
09/20 20:17, 7F

09/22 01:42, , 8F
原po有嘗試拆成多個 sub-function 去 debug 嗎?
09/22 01:42, 8F

09/22 01:43, , 9F
由小功能慢慢加上去,自然就找得出癥結點在哪
09/22 01:43, 9F

09/22 01:44, , 10F
程式可以跑,不代表寫出來的東西就是正確的
09/22 01:44, 10F

09/22 23:01, , 11F
是 我知道 謝謝你 只是幾千行要這樣搞實在是很麻煩 因
09/22 23:01, 11F

09/22 23:02, , 12F
此.......當然是希望能直接找到癥結點啦 找不到就只能
09/22 23:02, 12F

09/22 23:02, , 13F
這樣做了
09/22 23:02, 13F
文章代碼(AID): #1GKsWKvF (MATLAB)
文章代碼(AID): #1GKsWKvF (MATLAB)