作者potter1529 (宋代才女唱元曲)
看板MATLAB
标题Re: [问题] 读档Index exceeds matrix dimensions
时间Sat Sep 15 01:23:29 2012
: 结果就是
: 当回圈的第一次,也就是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);
: 请问这是什麽问题?
1F:→ shane:不过我不晓得你的问题出在哪,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
2F:推 doom8199:尝试把 (大量运算) 写成一个 function, 或是养成习惯 09/19 20:54
3F:→ doom8199:把用完无 reuse 的 data clear 掉 09/19 20:55
4F:→ doom8199:bug 有很多种,例如变数 i or x 在(大量运算) 里重复出现 09/19 20:56
5F:→ doom8199:或是原po使用了会让 matlab 误判的变数名称 (ex: size) 09/19 20:58
6F:→ potter1529:嗯..当然有可能是那样没错 可是程式里面我"只"加了一个 09/20 20:16
7F:→ potter1529:框住所有内容的回圈 也就只是让它从一次变两次这样 09/20 20:16
8F:→ potter1529:回圈的变数当然是没有重复的..这样错就让人有点费解了 09/20 20:17
9F:→ doom8199:原po有尝试拆成多个 sub-function 去 debug 吗? 09/22 01:42
10F:→ doom8199:由小功能慢慢加上去,自然就找得出症结点在哪 09/22 01:43
11F:→ doom8199:程式可以跑,不代表写出来的东西就是正确的 09/22 01:44
12F:→ potter1529:是 我知道 谢谢你 只是几千行要这样搞实在是很麻烦 因 09/22 23:01
13F:→ potter1529:此.......当然是希望能直接找到症结点啦 找不到就只能 09/22 23:02
14F:→ potter1529:这样做了 09/22 23:02