作者OuOcc (分析师)
看板MATLAB
标题[讨论] 关於矩阵取相同元素次数
时间Thu Aug 6 18:29:39 2015
目前有一乱数矩阵
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
请问一下这种该如何下手呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.58.176.226
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1438856981.A.6AB.html
1F:→ celestialgod: unique(x, 'rows')在每一行做回圈计算相等的列数 08/06 19:36
2F:→ OuOcc: 使用此函数不就把相同向量剔除了吗? 请问该如何计算次数呢? 08/06 20:04
3F:推 celestialgod: m=unique(x, 'rows'); count=zeros(size(m, 1), 1); 08/06 20:14
4F:→ celestialgod: for i=1:size(m, 1), count(i)=sum(all(x=m(i, :), 08/06 20:16
5F:→ celestialgod: 1));end; 08/06 20:16
6F:→ OuOcc: 非常感谢。我後来搭配accumarray写出来了 感恩S 08/06 20:30
7F:推 at01076172: 啊!这篇文章太晚出现了XD 虽然看着下面的回应又多学 08/09 14:32
8F:→ at01076172: 到了新的东西 08/09 14:32
9F:→ at01076172: 我的方法是 [C,~,ic]=unique(x,'rows'); count=histc( 08/09 14:33
10F:→ at01076172: ic,unique(ic)); 08/09 14:33
11F:→ at01076172: 除了histc 也可以尝试使用 count=sum(bsxfun(@eq,ic,u 08/09 14:34
12F:→ at01076172: nique(ic)')); 08/09 14:34
13F:→ celestialgod: 原po应该是用accumarray(ic, ones(size(x,1),1)) 08/09 14:42
15F:→ celestialgod: 我觉得第一个方法很酷 08/09 14:49
16F:推 at01076172: 哦哦!话说我当初好像也有查到tabulate,但它只吃向量, 08/09 15:47
17F:→ at01076172: 所以後来想着想着才想起ic才解决这个只吃向量的问题 08/09 15:47
18F:→ at01076172: 目前小弟还刚开始使用matlab一个月而已,还需要跟大家 08/09 15:48
19F:→ at01076172: 多多学习:D 08/09 15:48