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

看板MATLAB作者 (銀英傳出webgame!?)時間8年前 (2016/07/15 14:58), 8年前編輯推噓5(502)
留言7則, 2人參與, 最新討論串3/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) : 請問大大這樣的程式要如何寫呢? : 謝謝 假設你的C是 3-by-N, 2D int array, (因此不需考慮round off error) <= 這個版本不需考慮round off error %%%% 01 function [idx, vec] = find_mode_vec( C ) 02 03 array_max = max( C(:) ); 04 R3_to_R1_mapping = [(array_max+1)*(array_max+1), array_max+1, 1]*C; 05 06 most_freq_entry = mode(R3_to_R1_mapping); 07 08 09 idx = find( R3_to_R1_mapping, most_freq_entry, 'first'); 10 vec = C(:, idx); 11 12 end 只適用於 max( C(:) ) 不太大的case, 如果太大, 請另設 R3_to_R1_mapping 所該使用的mapping function. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.22.216 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1468565886.A.1BA.html ※ 編輯: YoursEver (140.109.22.216), 07/15/2016 15:00:16

07/16 01:12, , 1F
謝謝Y大,我run出來出現這個錯誤訊息
07/16 01:12, 1F

07/16 01:14, , 2F
Please excuase me that I cannot use Chinese now. If your matri C is a 2-by-N matrix, use the following line instead: R3_to_R1_mapping = [array_max+1, 1] * C; ※ 編輯: YoursEver (218.161.51.131), 07/16/2016 05:36:59

07/16 14:54, , 3F
謝謝Y大,這次是出現這個訊息..
07/16 14:54, 3F

07/16 14:54, , 4F
I made a mistake. Please use the function below: 01 function [idx, vec] = find_mode_vec( C ) 02 array_max = max( C(:) ); 03 R3_to_R1_mapping = [ array_max+1, 1]*C + 1; 04 05 % most_freq_entry = mode(R3_to_R1_mapping); 06 07 % if most_freq_entry==1 08 R3_to_R1_without_1 = R3_to_R1_mapping(R3_to_R1_mapping~=1); 09 most_freq_entry = mode(R3_to_R1_without_1); 10 % end 11 12 idx = find( R3_to_R1_mapping==most_freq_entry, 1); 13 vec = C(:, idx); 14 end ※ 編輯: YoursEver (218.161.51.131), 07/16/2016 18:14:26 ※ 編輯: YoursEver (218.161.51.131), 07/16/2016 18:15:35 ※ 編輯: YoursEver (218.161.51.131), 07/16/2016 18:17:35 ※ 編輯: YoursEver (218.161.51.131), 07/16/2016 18:22:18

07/17 09:37, , 5F
謝謝Y大,感謝你..
07/17 09:37, 5F

07/17 09:48, , 6F
補推
07/17 09:48, 6F

07/18 12:10, , 7F
Y大還上色!太用心了!
07/18 12:10, 7F
文章代碼(AID): #1NY8b-6w (MATLAB)
文章代碼(AID): #1NY8b-6w (MATLAB)