How to create logical binary matrix where two variables are from the same row ?
2 views (last 30 days)
Show older comments
Hi .. let's say I have this table
*X* *Y*
01 a
01 b
01 c
02 b
02 g
03 a
03 g
04 a
04 b
04 c
I want to create a logical binary matrix where the rows indicate to the unique values of X and the columns indicate the unique values of Y the output would be like this
a b c g
01 1 1 1 0
02 0 1 0 1
03 1 0 0 1
04 1 1 1 0
I have a large table and I want to find groups of Xs based on Ys. According to this example, I have 3 groups (01,04) (02) (03).
any help would be appreciated thank you
0 Comments
Accepted Answer
Stephen23
on 5 Aug 2016
Edited: Stephen23
on 5 Aug 2016
V = [1,1,1,2,2,3,3,4,4,4];
C = {'a','b','c','b','g','a','g','a','b','c'};
%
[Cu,~,Cc] = unique(C);
[Vu,~,Vr] = unique(V);
out = false(numel(Vu),numel(Cu));
out(sub2ind(size(out),Vr,Cc)) = true
Creates:
>> out
out =
1 1 1 0
0 1 0 1
1 0 0 1
1 1 1 0
>> Cu % columns
Cu =
'a' 'b' 'c' 'g'
>> Vu % rows
Vu =
1 2 3 4
More Answers (0)
See Also
Categories
Find more on Matrix Indexing 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!