作者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