Re: [討論] 在一個矩陣中找出最多出現次數的向量

看板MATLAB作者 (天)時間8年前 (2016/07/15 01:01), 8年前編輯推噓6(607)
留言13則, 3人參與, 最新討論串2/3 (看更多)
※ 引述《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://www.ptt.cc/bbs/MATLAB/M.1468515699.A.891.html ※ 編輯: celestialgod (1.165.234.106), 07/15/2016 01:02:10

07/15 09:26, , 1F
謝謝C大,小弟我要11這個數值要如何取得呢?
07/15 09:26, 1F

07/15 09:27, , 2F
因為後續的程式需要輸入挑出這組的數字11
07/15 09:27, 2F

07/15 09:38, , 3F
其實小弟最主要只是要得到11這個數值就好,不用列出
07/15 09:38, 3F

07/15 09:39, , 4F
17,24沒關係,謝謝
07/15 09:39, 4F

07/15 10:02, , 5F
就index啊,C2括號內的find那段就可以
07/15 10:02, 5F

07/15 13:31, , 6F
n大,在C2括號內哪邊打index呢? 謝謝
07/15 13:31, 6F

07/16 10:13, , 7F
晚點再試試看,我沒注意到要11這個數值
07/16 10:13, 7F

07/16 10:16, , 8F
應該是idx=find(any(bsxfun(@ne, C, zeros(1, size(
07/16 10:16, 8F

07/16 10:16, , 9F
C, 2))));
07/16 10:16, 9F

07/16 10:16, , 10F
idx(maxIdx)試試看,不行再跟我說
07/16 10:16, 10F

07/16 10:17, , 11F
目前手邊沒電腦可以測試
07/16 10:17, 11F

07/16 15:03, , 12F
謝謝C大,但還是沒有顯示11..
07/16 15:03, 12F
已更新,我少一個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

07/17 09:36, , 13F
謝謝C大,太感謝你了...
07/17 09:36, 13F
文章代碼(AID): #1NXyLpYH (MATLAB)
文章代碼(AID): #1NXyLpYH (MATLAB)