作者celestialgod (天)
看板MATLAB
标题Re: [讨论] 在一个矩阵中找出最多出现次数的向量
时间Fri Jul 15 01:01:36 2016
※ 引述《popo14777 (草草)》之铭言:
: 小弟的程式如下
: A=[0 0 0 0 0 17 17 19 19 19 17 17 17 17 17]
: B=[0 0 0 0 0 22 22 24 24 24 24 24 24 24 24]
: C=[A;B]
: 0,0 出现5次
: 17,22 出现2次
: 19,24 出现3次
: 17,24 出现4次
: 直向量的个数有15个
: 在C的一个矩阵下挑出次数最多的直向量,且要最少个数,还要不包含零
: 所以挑第11组(17,24)的直向量,并取得11这个数值
: 小弟还有其他矩阵,例如矩阵为11*15(这个范例是2*15)
: 请问大大这样的程式要如何写呢?
: 谢谢
我不知道有没有更好的方法XD
好读版:
http://pastebin.com/hANz1W33
A = [0 0 0 0 0 17 17 19 19 19 17 17 17 17 17];
B=[0 0 0 0 0 22 22 24 24 24 24 24 24 24 24];
C = [A; B]';
% 找出没有0的列
idxFilterZeros = find(any(bsxfun(@ne, C, zeros(1, size(C, 2))), 2));
C2 = C(idxFilterZeros, :);
% 找出unique的列
[output, idx1, idx2] = unique(C2, 'rows');
% 用unique列的index去算frequencies
uni_idx = sort(unique(idx2));
% 计算unique列的frequencies
count = histc(idx2, uni_idx);
% 找到最大frequency的列
[~, maxIdx] = max(count);
% 叫出有最大frequency的列
out = C2(find(idx2 == uni_idx(maxIdx), 1, 'first'), :);
outIdx = idxFilterZeros(idx1(maxIdx));
已更正,outIdx就是所求
有问题再问吧XD
另外麻烦不要私信问,一切问题留在板上处理,谢谢
--
R资料整理套件系列文:
magrittr #1LhSWhpH (R_Language) http://tinyurl.com/j3ql84c
data.table #1LhW7Tvj (R_Language) http://tinyurl.com/hr77hrn
dplyr(上) #1LhpJCfB (R_Language) http://tinyurl.com/jtg4hau
dplyr(下) #1Lhw8b-s (R_Language)
tidyr #1Liqls1R (R_Language) http://tinyurl.com/jq3o2g3
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.165.234.106
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1468515699.A.891.html
※ 编辑: celestialgod (1.165.234.106), 07/15/2016 01:02:10
1F:推 popo14777: 谢谢C大,小弟我要11这个数值要如何取得呢? 07/15 09:26
2F:→ popo14777: 因为後续的程式需要输入挑出这组的数字11 07/15 09:27
3F:推 popo14777: 其实小弟最主要只是要得到11这个数值就好,不用列出 07/15 09:38
4F:→ popo14777: 17,24没关系,谢谢 07/15 09:39
5F:推 name0625: 就index啊,C2括号内的find那段就可以 07/15 10:02
6F:推 popo14777: n大,在C2括号内哪边打index呢? 谢谢 07/15 13:31
7F:→ celestialgod: 晚点再试试看,我没注意到要11这个数值 07/16 10:13
8F:→ celestialgod: 应该是idx=find(any(bsxfun(@ne, C, zeros(1, size( 07/16 10:16
9F:→ celestialgod: C, 2)))); 07/16 10:16
10F:→ celestialgod: idx(maxIdx)试试看,不行再跟我说 07/16 10:16
11F:→ celestialgod: 目前手边没电脑可以测试 07/16 10:17
12F:推 popo14777: 谢谢C大,但还是没有显示11.. 07/16 15:03
已更新,我少一个index,而且用错个,抱歉
outIdx就是你要的11了
※ 编辑: celestialgod (111.253.88.49), 07/16/2016 21:12:37
※ 编辑: celestialgod (111.253.88.49), 07/16/2016 21:16:57
13F:推 popo14777: 谢谢C大,太感谢你了... 07/17 09:36