→ 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
推 doom8199:嘗試把 (大量運算) 寫成一個 function, 或是養成習慣 09/19 20:54
→ doom8199:把用完無 reuse 的 data clear 掉 09/19 20:55
→ doom8199:bug 有很多種,例如變數 i or x 在(大量運算) 裡重複出現 09/19 20:56
→ doom8199:或是原po使用了會讓 matlab 誤判的變數名稱 (ex: size) 09/19 20:58
→ potter1529:嗯..當然有可能是那樣沒錯 可是程式裡面我"只"加了一個 09/20 20:16
→ potter1529:框住所有內容的迴圈 也就只是讓它從一次變兩次這樣 09/20 20:16
→ potter1529:迴圈的變數當然是沒有重複的..這樣錯就讓人有點費解了 09/20 20:17
→ doom8199:原po有嘗試拆成多個 sub-function 去 debug 嗎? 09/22 01:42
→ doom8199:由小功能慢慢加上去,自然就找得出癥結點在哪 09/22 01:43
→ doom8199:程式可以跑,不代表寫出來的東西就是正確的 09/22 01:44
→ potter1529:是 我知道 謝謝你 只是幾千行要這樣搞實在是很麻煩 因 09/22 23:01
→ potter1529:此.......當然是希望能直接找到癥結點啦 找不到就只能 09/22 23:02
→ potter1529:這樣做了 09/22 23:02