2013-05-30 4 views
3

Допустим, что у меня есть ряд матриц n с одинаковыми размерами (p x q элементов). Можете ли вы получить матрицу, содержащую элементы с самой высокой частотой в каждой соответствующей позиции?Matlab - матрица голосования

Например, допустим, что у меня есть 3 матрицы с 3 x 3 элементами:

m1 = [1 0 0; 0 2 0; 0 2 0] 
m2 = [1 0 0; 0 2 0; 0 3 0] 
m3 = [1 0 0; 0 0 0; 0 3 0] 

Полученная матрица должна быть:

m = [1 0 0; 0 2 0; 0 3 0] 

я сделал это, проходя через каждую позицию моих матриц , но в моем реальном случае у меня есть 1000 x 1000, и это займет слишком много времени. Есть ли автоматизированный способ сделать это?

ответ

8

Во-первых, вы должны объединить все в 3D-массив; это будет намного легче обрабатывать, чем нагрузки с индивидуально названными 2D-массивами.

Как только вы это сделаете, вы можете просто сделать mode(m_everything, 3).

+2

Макс ~ = наиболее частое – Bull

+0

Это не решит мой случай. Если на позиции у меня есть что-то вроде '2 2 3', наиболее частым будет' 2', тогда как max вернет мне '3'. – Simon

+0

@Simon, пользователь: Извините, моя ошибка, я неправильно понял. Попробуйте 'mode' вместо этого! –

Смежные вопросы