[討論] 關於矩陣取相同元素次數

作者: OuOcc (歐瘀歐)   2015-08-06 18:29:39
目前有一亂數矩陣
x=round(rand(100,2).*10)
假設前五項是
1 1
1 1
1 1
1 1
2 2
經過運算會出現一新矩陣
1 1 4(1 1矩陣出現4次)
2 2 1
請問一下這種該如何下手呢?
作者: celestialgod (天)   2015-08-06 19:36:00
unique(x, 'rows')在每一行做迴圈計算相等的列數
作者: OuOcc (歐瘀歐)   2015-08-06 20:04:00
使用此函數不就把相同向量剔除了嗎? 請問該如何計算次數呢?
作者: celestialgod (天)   2015-08-06 20:14:00
m=unique(x, 'rows'); count=zeros(size(m, 1), 1);for i=1:size(m, 1), count(i)=sum(all(x=m(i, :),1));end;
作者: OuOcc (歐瘀歐)   2015-08-06 20:30:00
非常感謝。我後來搭配accumarray寫出來了 感恩S
作者: at01076172   2015-08-09 14:32:00
啊!這篇文章太晚出現了XD 雖然看著下面的回應又多學到了新的東西我的方法是 [C,~,ic]=unique(x,'rows'); count=histc(ic,unique(ic));除了histc 也可以嘗試使用 count=sum(bsxfun(@eq,ic,unique(ic)'));
作者: celestialgod (天)   2015-08-09 14:42:00
原po應該是用accumarray(ic, ones(size(x,1),1))後來搜尋到這個 http://tinyurl.com/o99zwe7我覺得第一個方法很酷
作者: at01076172   2015-08-09 15:47:00
哦哦!話說我當初好像也有查到tabulate,但它只吃向量,所以後來想著想著才想起ic才解決這個只吃向量的問題目前小弟還剛開始使用matlab一個月而已,還需要跟大家多多學習:D

Links booklink

Contact Us: admin [ a t ] ucptt.com