Matlab: найдите наиболее повторяющееся значение в ячейке (пересмотрено)

Для моего кода idxcell{:,1} для итераций 1:10 дает следующие результаты:

ans =
         9    10    14    15    19    20    24    25
    ans =
      Columns 1 through 13
         7     8    11    12    13    14    16    17    18    19    21    22    23
      Column 14
        24
    ans =
        13    14    15    18    19    20    23    24    25
    ans =
         6     7    11    12    16    17    21    22
    ans =
        16    17    21    22
    ans =
         6     7    11    12    13    16    17    21
    ans =
         4     5     8     9    10    13    14    15    19    20
    ans =
         4     5     8     9    10    14    15
    ans =
        11    12    13    14    16    17    18    19    21    22    23    24
    ans =
         1     2     3     6     7     8    11    12    13

Как я могу получить наиболее повторяющееся значение этих элементов ячейки (я думаю, что в этой парадигме это «14»)? Я не хочу индексировать только значение. я пытался

idxcell{:,1}
temp = idxcell{:,1};
M = mode(temp)

но получил результат только для первой ячейки, и я не уверен, что mode() - это то, что мне нужно использовать для моей цели.


На этот вопрос ответил angainor: mode([idxcell{:}])


Пересмотрено: Также можно выполнить поиск всех массивов/строк ячеек за один раз для i итераций, чтобы найти наиболее повторяющееся значение и отсортировать результаты, от наиболее повторяющихся к менее, внутри массива ячеек или матрицы по убыванию заказ?


|Ответил я после совета angainor: Sort = sort([idxcell{:}])


Заранее спасибо.


person professor    schedule 20.11.2012    source источник


Ответы (1)


Если я правильно понимаю, вам нужно объединить все векторы ячеек в один, прежде чем вызывать mode

mode([idxcell{:}])
ans =

13

Если вы хотите получить наиболее часто встречающееся значение для всех ячеек, вы можете использовать cellfun

cellfun(@mode, idxcell)
ans =

 9    10    14    15    19    20    24    25
person angainor    schedule 20.11.2012
comment
Быстро и точно в ответ. Всего хорошего. - person professor; 20.11.2012
comment
cellfun(@mode, idxcell) возвращаемое значение предназначено только для первой строки ячейки. @angainor Можно ли добавить все строки/массивы ячеек в матрицу и выполнить поиск в этой матрице наиболее повторяющегося значения? и если да то как можно сделать? - person professor; 21.11.2012
comment
@professor этот вызов возвращает матрицу, в которой элементы являются результатом вызова функции mode для каждого элемента ячейки. Я не совсем понимаю, что вы подразумеваете под «первым рядом ячеек». Если ваш массив ячеек имеет размер (n,m), этот вызов возвращает матрицу (n,m). - person angainor; 21.11.2012
comment
извините, пересмотрел мой вопрос, задав в общей сложности i итераций, можно ли отсортировать эти массивы ячеек в одной матрице ячеек и выполнить для нее cellfun(@mode, cellmatrixidxcell). @angainor - person professor; 21.11.2012
comment
@professor, почему бы тебе не запустить sort по результатам cellfun? - person angainor; 21.11.2012
comment
Сделано это Sort = sort([idxcell{:}]). Спасибо за подсказку не подумал. Будьте здоровы, @angainor. - person professor; 21.11.2012