Find in a matrix value pair.
3 次查看(过去 30 天)
显示 更早的评论
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 个评论
Chandra Kurniawan
2011-12-15
I got little confused.
What does 'analyze the combination of this two value' means?
Can U tell me?
采纳的回答
Andrei Bobrov
2011-12-19
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 个评论
Fangjun Jiang
2011-12-19
+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().
更多回答(1 个)
the cyclist
2011-12-15
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 个评论
the cyclist
2011-12-19
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!