[讨论] 关于矩阵取相同元素次数

楼主: 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