4

次のケースがあります。

    Q = [idxcell{:,1}];     
    Sort = sort(Q,'descend')                                                                                                                       
    Sort =
          Columns 1 through 13
            23    23    22    22    20    19    18    18    18    18    17    17    17
          Columns 14 through 26
            15    15    14    14    13    13    13    12    12    12    11    10     9
          Columns 27 through 39
             9     9     8     8     8     8     8     7     7     7     7     7     7
          Columns 40 through 52
             7     6     6     6     5     4     4     3     3     3     3     2     2
          Columns 53 through 64
             2     2     2     2     2     2     2     1     1     1     1     1

値が繰り返される回数に応じて行列 Sort をどのようにソートできますか?

待機中の結果は次のとおりです。

repeatedSort =  2(9) 7(7) 1(5) 8(5) 3(4) 18(4) 6(3) 9(3) 12(3) 13(3) 17(3) 4(2) 14(2) 15(2) 22(2) 23(2) 5(1) 10(1) 11(1) 19(1) 20(1)
      or 
repeatedSort = 2 7 1 8 3 18 6 9 12 13 17 4 14 15 22 23 5 10 11 19 20

前もって感謝します。

4

2 に答える 2

4

You can use the TABULATE function from the Statistics Toolbox, then call SORTROWS to sort by the frequency.

Example:

x = randi(10, [20 1]);    %# random values
t = tabulate(x);          %# unique values and counts
t = t(find(t(:,2)),1:2);  %# get rid of entries with zero count
t = sortrows(t, -2)       %# sort according to frequency

the result, where first column are the unique values, second is their count:

t =
     2     4     %# value 2 appeared four times
     5     4     %# etc...
     1     3
     8     3
     7     2
     9     2
     4     1
     6     1
于 2012-11-21T22:37:24.840 に答える
3

これを行う1つの方法は次のとおりです。

d      = randi(10,1,30); %Some fake data
n      = histc(d,1:10);
[y,ii] = sort(n,'descend');

disp(ii) % ii is now sorted according to frequency
于 2012-11-21T18:49:31.003 に答える