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!