[問題] 讀檔Index exceeds matrix dimensions

看板MATLAB作者 (宋代才女唱元曲)時間13年前 (2012/09/11 20:46), 編輯推噓3(309)
留言12則, 4人參與, 最新討論串1/2 (看更多)
各位大大好,這幾天遇到很詭異的情況,一直弄不懂 懇求高手幫忙看看這是什麼問題... 我的這個程式碼是一個很大的運算、判斷功能 可是主要是這樣 原本的程式碼: 1 folder_name = 'D:\Brain\Left1~18\'; 2 side = '13~18\'; 3 folder_name = strcat(folder_name,side); 4 folder = dir(folder_name); 6 for x = 1:size(folder); 8 b2 = folder(x,1).name; 9 pic_name = strcat(folder_name,b2); 10 I = imread(pic_name); (大量運算) 2000 end (1) 1~10行都是讀檔 ,之所以會多寫幾步,是因為要批次處理整個資料夾的圖檔 所以這樣寫 (2) 2~3行是加上選擇的子資料夾、4行是將整個資料夾裡頭的檔案存到folder陣列 (3) 8~9行是將folder陣列中所儲存"裡頭圖檔的檔名",加到讀檔的位置裡pic_name (4) 10行讀完檔之後就開始大量運算 (5) 綠字部分可以無視,跟問題應該沒關 這個程式碼本來一直都沒有問題,讀檔的也一直都很OK 可是因為我想要一次跑多個資料夾 於是多加了一個for迴圈 (也嘗試了swithc、if、while) 結果卻不行!!? 程式碼變成以下這樣:(黃字部分是加的) for i = 1:2 clear floder_name;clear folder; 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 (紫色那行字我試著加,不過結果沒差) 結果就是 當迴圈的第一次,也就是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); 請問這是什麼問題? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.25.118.144

09/12 01:31, , 1F
我也遇到同樣問題!! 多加迴圈後 正常的程式就掛了
09/12 01:31, 1F

09/12 01:31, , 2F
跑出 Index exceeds matrix dimensions
09/12 01:31, 2F

09/12 02:00, , 3F
dir 吃字串嗎?
09/12 02:00, 3F

09/12 02:55, , 4F
沒問題! 在加上跑第二次的迴圈之前 dir是完全可用的
09/12 02:55, 4F

09/12 02:55, , 5F
可是完全沒動到內部 只在外面加迴圈卻錯了
09/12 02:55, 5F

09/12 02:55, , 6F
全錯也就算了 卻是i=1可以跑 i=2出錯= =
09/12 02:55, 6F

09/12 05:02, , 7F
你是寫成script還是function,function內,clear在for迴圈
09/12 05:02, 7F

09/12 05:03, , 8F
裡面無法執行,要等到跳出function
09/12 05:03, 8F

09/12 05:03, , 9F
不過我不曉得你的問題出在哪,code看起來是可以的
09/12 05:03, 9F

09/12 07:17, , 10F
不是function是主程式、clear加不加都會錯
09/12 07:17, 10F

09/12 22:23, , 11F
你把;拿掉看看是什麼問題
09/12 22:23, 11F

09/12 22:29, , 12F
樓上你好,可以稍微講詳細一點嗎?拿掉哪裡的;呢?
09/12 22:29, 12F
文章代碼(AID): #1GJpAdAg (MATLAB)
文章代碼(AID): #1GJpAdAg (MATLAB)