2016-06-02 4 views
0

У меня есть массив входного сигнала, как этотУникальные комбинации массива и число вхождений в MATLAB

all = [0 0;0 3;6 6;6 0;13 0;12 12;3 0;0 6;6 6]; 

мне нужно найти уникальные комбинации каждой строки, а также количество раз, эта комбинация происходит, например,

output1 = [0 0;0 3;0 6;0 13;6 6;12 12]; 
output2 = [1;2;2;1;2;1]; 

Для получения уникальной комбинации я использовал комбинацию sort и unique функций таким образом

unique(sort(all ,2),'rows'); 

Проблема становится все количество вхождений каждого combiantion. Я попытался с помощью функции hist таким образом

[a, b]= hist(all ,unique(sort(all ,2),'rows')); 

Но я получил его ошибка

Ошибка с помощью histc вектора Грань должна быть монотонно не убывает.

Ошибка в истории (строка 121) nn = histc (y, edgec, 1);

Может кто-нибудь, пожалуйста, помогите мне получить требуемые выходы?

Благодаря

ответ

2

В таких случаях, вы не хотите работать с полными рядами. С индексами легче работать. unique уже выполняет преобразование в индексы для вас.

[output1,b,c]=unique(sort(all ,2),'rows') 
output2=hist(c,1:numel(b))