[問題] 統計陣列元素個數
我有a,b兩個大小相同矩陣
想統計a矩陣中元素出現的次數
但是不是出現一次加一次
是依照b矩陣中相對應位置的元素當作出現次數
ex.
a=[1 2 1 b=[3 2 1
2 1 1 5 1 1
1 1 1] 2 2 2]
1:3+1+1+1+2+2+2=12次
2:2+5=7次
a的元素是正浮點數 但實際多少要依輸入資料而定
b的元素是0~1之間浮點數
想請問這要怎麼做?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.64.91.30
推
12/14 21:53, , 1F
12/14 21:53, 1F
→
12/14 21:55, , 2F
12/14 21:55, 2F
→
12/14 21:55, , 3F
12/14 21:55, 3F
喔喔!!
可是那是舉例
現實的a我沒辦法用==這種方式寫
因為a元素是浮點數
值的範圍很大 個數也很多 768*1024個
也可能完全沒重複
所以b也是這麼多個0.00001~1.00000的浮點數
這樣的話有比較好的寫法嗎?
推
12/15 01:49, , 4F
12/15 01:49, 4F
如果我是要寫多少數量在區間內的話應該是可以這樣寫
把0~1分五個區間 0~0.2 0.2~0.4...分開統計
如果說要精確統計的話呢?
推
12/15 02:03, , 5F
12/15 02:03, 5F
這個我不知道什麼意思耶...
可以再說明一下嗎? 感謝
推
12/15 16:27, , 6F
12/15 16:27, 6F
推
12/15 16:30, , 7F
12/15 16:30, 7F
→
12/15 16:31, , 8F
12/15 16:31, 8F
我有一個想法不知道可不可行
就是我將a當作index去sort b
用一個新的陣列裝 c=[a b
a b
a b
....]
然後判斷a是否相同再累加b
這樣是可行的嗎?
不過我還是不太清楚這要怎麼寫就是了XD
→
12/16 18:59, , 9F
12/16 18:59, 9F
→
12/16 18:59, , 10F
12/16 18:59, 10F
我用我後來這個方法寫完了
只是我還是不了解你的方法 囧
我是這樣寫 麻煩請你幫我看看有沒有問題
L_1d=L(:);
NG_1d=Nor_Gau(:);
[sort_L, id]=sort(L_1d);
num=prod(size(sort_L));
tmpS=[];
tmpS(1,1)=sort_L(1);
tmpS(1,2)=0;
tmp=sort_L(1);
j=1;
for i=2:num
if sort_L(i)==tmp
tmpS(j,2)=tmpS(j,2)+NG_1d(id(i));
elseif sort_L(i)~=tmp
j=j+1;
tmpS(j,1)=sort_L(i);
tmpS(j,2)=NG_1d(id(i));
tmp=sort_L(i);
end
end
→
12/16 20:40, , 11F
12/16 20:40, 11F
→
12/16 20:41, , 12F
12/16 20:41, 12F
→
12/16 20:44, , 13F
12/16 20:44, 13F
我大概明白你的意思了
總覺得我的方法不夠直覺...
程式碼可能也還有簡化的空間吧
寫了好大一串
不知道哪裡還可以優化
感謝你的指導!!
※ 編輯: cashpaggy 來自: 203.64.91.30 (12/17 00:45)
推
12/17 01:42, , 14F
12/17 01:42, 14F
→
12/17 01:43, , 15F
12/17 01:43, 15F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章