作者potter1529 (宋代才女唱元曲)
看板MATLAB
標題[問題] 讀檔Index exceeds matrix dimensions
時間Tue Sep 11 20:46:27 2012
各位大大好,這幾天遇到很詭異的情況,一直弄不懂
懇求高手幫忙看看這是什麼問題...
我的這個程式碼是一個很大的運算、判斷功能
可是主要是這樣
原本的程式碼:
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
1F:推 david5192003:我也遇到同樣問題!! 多加迴圈後 正常的程式就掛了 09/12 01:31
2F:→ david5192003:跑出 Index exceeds matrix dimensions 09/12 01:31
3F:→ sunev:dir 吃字串嗎? 09/12 02:00
4F:→ potter1529:沒問題! 在加上跑第二次的迴圈之前 dir是完全可用的 09/12 02:55
5F:→ potter1529:可是完全沒動到內部 只在外面加迴圈卻錯了 09/12 02:55
6F:→ potter1529:全錯也就算了 卻是i=1可以跑 i=2出錯= = 09/12 02:55
7F:推 shane:你是寫成script還是function,function內,clear在for迴圈 09/12 05:02
8F:→ shane:裡面無法執行,要等到跳出function 09/12 05:03
9F:→ shane:不過我不曉得你的問題出在哪,code看起來是可以的 09/12 05:03
10F:→ potter1529:不是function是主程式、clear加不加都會錯 09/12 07:17
11F:推 shane:你把;拿掉看看是什麼問題 09/12 22:23
12F:→ potter1529:樓上你好,可以稍微講詳細一點嗎?拿掉哪裡的;呢? 09/12 22:29