# Find in a matrix value pair.

3 views (last 30 days)
Maurizio on 15 Dec 2011
I have a matrix with 8 column and 250 raw. I need to create a function that read the first two column and and analyze the combination of this two value. For Example the matrix is
A|B|...
A|C|...
C|A|...
A|C|...
C|A|...
and I would like to have as output the single value pairs and the repetitions number . For example : A|B|1
A|C|2
C|A|2...
Could you help me please?
##### 3 CommentsShow 1 older commentHide 1 older comment
Chandra Kurniawan on 15 Dec 2011
I got little confused.
What does 'analyze the combination of this two value' means?
Can U tell me?
Maurizio on 15 Dec 2011
I have an array with 25 column. I need to check if in the first two colums there are any combination and if yes I need to know for each combination the frequency.

Sign in to comment.

### Accepted Answer

Andrei Bobrov on 19 Dec 2011
k = { 'bc' 'ec'
'ed' 'cd'
'dc' 'ec'
'bc' 'be'
'ed' 'cd'
'ed' 'ae'
'bc' 'ec'
'ba' 'bb'
'ca' 'aa'
'ab' 'ad'}
[a,c,c] = unique(k);
B = reshape(c,size(k));
[N,M,M] = unique(B,'rows');
p = histc(M,1:max(M));
out = [a(N),num2cell(p)];
##### 2 CommentsShow NoneHide None
Maurizio on 19 Dec 2011
Andrei can I order a 250x20cell based for example on the first two colums?
Fangjun Jiang on 19 Dec 2011
+1. andrei, very nice way to use unique(CellArray,'rows') and avoid "Warning: 'rows' flag is ignored for cell arrays.". I used to combine cell array into char array and then apply unique().

Sign in to comment.

### More Answers (1)

the cyclist on 15 Dec 2011
I think I understand what you want to do. It can be done in three steps:
• Isolate the first two columns of your array:
>> x = A(:,[1 2]);
• Find the unique two-element combinations (i.e. unique rows):
>> [ux,i,j] = unique(x,'rows')
• Find the frequency count of the indices to those rows:
>> count = hist(j,unique(j))
I was not able to test this out, so you should think it through and test it, but I think those are the basic elements.
##### 20 CommentsShow 18 older commentsHide 18 older comments
Maurizio on 19 Dec 2011
because with cyclist my {x} is a <250x2>cell and on each cell there are only name and I use [ua,i,j]=uniqueRowsCA(x) matlab give to me the following error: ??? Undefined function or method 'uniqueRowsCA' for input arguments of type 'cell'.
the cyclist on 19 Dec 2011
As I said in a prior comment, you have to download that function from here: http://www.mathworks.com/matlabcentral/fileexchange/25917-unique-rows-for-a-cell-array
Then put that function in your working directory, or somewhere in your path.

Sign in to comment.

### Categories

Find more on Multidimensional Arrays in Help Center and File Exchange

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!