[問題] 三維矩陣的遞迴設計已回收
問題:原本我的資料為二維矩陣,處理遞迴的寫法也沒有問題;
但當資料擴展成三維矩陣的時候,遞迴寫法就爆表了....
使用的矩陣:
P <50x30 double>
P = [1 0 1 1 0 1 ... 1 1
0 1 1 0 0 0 ... 1 0
. . . . . . . . . .
1 1 0 0 1 1 ... 1 1] %
P200 <50x30x200 double>
P200 = [1 0 1 1 0 1 ... 1 1
0 1 1 0 0 0 ... 1 0
. . . . . . . . . .
1 1 0 0 1 1 ... 1 1] x200
範例程式碼:
f1 = 0; f2 = 0;
f11 = zeros(50,30);
f12 = zeros(50,30); %以上預先設定矩陣節省運算時間%
%====遞迴運算核心部分====%
for i = 1:50;
if sum(P(i,:)) < 15; %小於15的設定是設定判定標準為總和30的一半
f1 = f1 + 1;
f11(f1,:) = P(i,:);
else
f2 = f2 + 1;
f12(f2,:) = P(i,:);
end
end
%====結束====%
擴展為三維時:
%====錯誤的範例程式碼====%
%====矩陣P200為(50,30,200)====%
f1 = 0; f2 = 0; %遞迴指標值還是要這樣設定嗎?%
f11 = zeros(50,30,200);
f12 = zeros(50,30,200); %以上預先設定矩陣節省運算時間%
%====遞迴運算核心部分====%
for j = 1:200;
for i = 1:50;
if sum(P(i,:,j)) < 15;
f1 = f1 + 1;
f11(f1,:,j) = P200(i,:,j);
else
f2 = f2 + 1;
f12(f2,:,j) = P200(i,:,j);
end
end
end
%====結束====%
當資料為二維矩陣的時候,範例的遞迴指標f1 f2都是從1開始向上累加;
上限最高到50(因為只判定二維資料),即資料中所使用的i迴圈次數。
當資料為三維矩陣的時候,範例的遞迴指標f1 f2還是從1開始向上累加;
上限最高到....50*200 = 10000 !?!?
因為判定的資料是三維矩陣,會跑全部的矩陣資料,所以判定的迴圈次數變成是50*200
我希望最後產生的資料,是 <50x30x200 double>的型態。
意指:我希望遞迴指標f1 f2在作前述邏輯判斷的時候,不是一次就做好50*200 = 10000
的判斷,而是每次都跑50次資料,並將結果記錄起來。
如果用笨笨的手寫方法的話,會是寫成這樣的:
f1 = 0; f2 = 0;
f11 = zeros(50,30);
f12 = zeros(50,30); %以上預先設定矩陣節省運算時間%
for i = 1:50;
if sum(P(i,:,1)) < 15; %小於15的設定是設定判定標準為總和30的一半
f1 = f1 + 1;
f11(f1,:,1) = P(i,:,1);
else
f2 = f2 + 1;
f12(f2,:,1) = P(i,:,1);
end
if sum(P(i,:,2)) < 15;
f1 = f1 + 1;
f11(f1,:,2) = P(i,:,2);
else
f2 = f2 + 1;
f12(f2,:,2) = P(i,:,2);
end
.
.
.
end
使用笨笨的手寫方法的話,就必須寫200次if的設定...
不知道版上的諸位能協助解答的嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.213.195
→
07/12 01:46, , 1F
07/12 01:46, 1F
推
07/12 01:53, , 2F
07/12 01:53, 2F
→
07/12 01:53, , 3F
07/12 01:53, 3F
→
07/12 02:02, , 4F
07/12 02:02, 4F
→
07/12 02:02, , 5F
07/12 02:02, 5F
→
07/12 02:03, , 6F
07/12 02:03, 6F
→
07/12 02:03, , 7F
07/12 02:03, 7F
※ 編輯: susuyumi 來自: 140.123.213.195 (07/12 02:28)
→
07/12 02:25, , 8F
07/12 02:25, 8F
→
07/12 02:25, , 9F
07/12 02:25, 9F
→
07/12 02:29, , 10F
07/12 02:29, 10F
→
07/12 02:29, , 11F
07/12 02:29, 11F
討論串 (同標題文章)