How to read and manipulate binary numbers?
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi,
Im currently working with binary numbers within matlab, however they are read into my code as single numbers eg. 10001011 etc. However, I need to break up the code so I can examine different parts. Is there a way of breaking a single number into a 2 or more cell array.
For Example, starting with 10001011
broken up to a 1x4 array of [10 00 10 11]
Id appreciate any help, Thanks! Mark
2 comentarios
Chad Gilbert
el 3 de Jul. de 2013
I'm having trouble imagining why you would need to do this. Are you sure there's no place in your code earlier on (say, when you're reading these data) when it makes more sense to format these? E.g. "a = fscanf(fid,'%c%c',2);" or something of the sort?
Respuesta aceptada
Chad Gilbert
el 3 de Jul. de 2013
Editada: Chad Gilbert
el 3 de Jul. de 2013
Strictly speaking, this should do it:
>> a = [1 0 0 0 1 0 1 1];
>> b = 10*a(1:2:end) + a(2:2:end)
b =
10 0 10 11
Or, if you've got a string of 1's and 0's:
>> a = '10001011';
>> arrayfun(@(i)a(i:i+1),1:2:length(a),'uniformoutput',false)
ans =
'10' '00' '01' '11'
Note: both of these solutions assume that you have an even number of digits. They'll croak if you pass in an odd number of digits.
3 comentarios
Muthu Annamalai
el 3 de Jul. de 2013
@Chad croaking is fixed (untested!) if you modify the line,
arrayfun(@(i)a(i:min(i+1,end)),1:2:length(a),'uniformoutput',false)
Chad Gilbert
el 3 de Jul. de 2013
@Mark The first idea handles and outputs actual numeric values. Your interest in the "first digit of the second cell" makes me think you're actually interested in strings. In which case, the second answer might be more appropriate.
@Muthu - nice! A quick test confirms that your fix works.
Ver también
Categorías
Más información sobre Whos en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!