Clear Filters
Clear Filters

how to cluster bit strings using matlab

1 view (last 30 days)
A= [ 1 0 0 0 0 0 1 1 0,
0 0 0 0 1 1 0 0 1,
1 1 1 1 1 1 1 0 0,
1 1 1 1 1 1 1 0 0,
1 0 0 0 0 0 1 1 0,
0 0 0 0 1 1 0 0 1,
1 1 1 1 1 1 1 1 1]
let A be the binary matrix.. 1 means there is decrease in production and 0 means there is increase in production ..
how will i cluster the same bit strings patterns?
i m working on health care data set[rows= 453 and col = 60] .. 1 represent decrease and 0 represent increase ..can this be possible using loops..
note: order of bits are important..// order dependent
  8 Comments
kumud alok
kumud alok on 6 May 2016
okay..thank you so much sir...i m learning matlab..i m working in a project ..my work is to analyse bit string patterns and then apply clustering algorithm..i have applied hierarchical clustering but i m still confused..i just want to asked u about the clustering ..and distance measure also..which similarity measure used i should either hamming or lavenstein..please help me..
Walter Roberson
Walter Roberson on 6 May 2016
The original code used
A= [ 1 0 0 0 0 0 1 1 0,
0 0 0 0 1 1 0 0 1,
1 1 1 1 1 1 1 0 0,
and so on. MATLAB does know to treat the end of line line a semi-colon in that case.

Sign in to comment.

Accepted Answer

Guillaume
Guillaume on 6 May 2016
It sounds like you just want to identify all identical 'bit strings' and assign them the same ID. This can easily be achieved with unique.
First, let's change A into something useful, since as mentioned in the comment to your question A is not "7 bit strings separated by commas", matlab ignores the commas. While we're at it, let's give the variable a name that has meaning:
A = [ 1 0 0 0 0 0 1 1 0, 0 0 0 0 1 1 0 0 1, 1 1 1 1 1 1 1 0 0, 1 1 1 1 1 1 1 0 0, 1 0 0 0 0 0 1 1 0, 0 0 0 0 1 1 0 0 1, 1 1 1 1 1 1 1 1 1]
bitstreams = reshape(A, 9, [])'; %reshape A into an n x 9 array
To give a unique ID to each identical bit stream we can simply use the third return value of unique, with the 'rows' option to the unique to consider each row as a complete object.
[~, ~, id] = unique(bitstreams, 'rows', 'stable') %stable optional
This returns
id = [1; 2; 3; 3; 1; 2; 4]
where you can see that the 1st and 5th bitstream have been assigned id 1, the 2nd and 6th id 2, the 3rd and 4th id 3, and the last one id 4.

More Answers (0)

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!