How to create logical binary matrix where two variables are from the same row ?

2 vues (au cours des 30 derniers jours)
SaraJr
SaraJr le 5 Août 2016
Commenté : SaraJr le 5 Août 2016
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

Réponse acceptée

Stephen23
Stephen23 le 5 Août 2016
Modifié(e) : Stephen23 le 5 Août 2016
You could use unique and sub2ind:
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

Plus de réponses (0)

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by