2010-11-12 5 views
4

J'ai un vecteur contenant une série d'entiers, et ce que je veux faire, c'est prendre tous les nombres, les convertir en leurs formes binaires correspondantes et concaténer ensemble toutes les valeurs binaires résultantes. Y a-t-il un moyen facile de faire cela?Codage binaire Matlab

par exemple. a = [1 2 3 4] -> b = [00000001 00000010 00000011 00000100] -> c = 00000001000000100000001100000100

Répondre

4

Essayez:

b = dec2bin(a) 
3

Oui, utilisez dec2bin, suivi d'une concaténation de chaîne.

+0

Pourquoi pas la réponse acceptée, il a d'abord .. – neuronet

4

Comme indiqué par les autres réponses, la fonction DEC2BIN est une option que vous devez résoudre ce problème. Cependant, comme indiqué par this other SO question, il peut être une option très lente lors de la conversion d'un grand nombre de valeurs.

Pour une solution plus rapide, vous pouvez plutôt utiliser la fonction BITGET comme suit:

a = [1 2 3 4];    %# Your array of values 
nBits = 8;     %# The number of bits to get for each value 
nValues = numel(a);   %# The number of values in a 
c = zeros(1,nValues*nBits); %# Initialize c to an array of zeroes 
for iBit = 1:nBits   %# Loop over the bits 
    c(iBit:nBits:end) = bitget(a,nBits-iBit+1); %# Get the bit values 
end 

Le résultat c sera un tableau de zéros et de uns. Si vous voulez transformer cela en une chaîne de caractères, vous pouvez utiliser la fonction CHAR comme suit:

c = char(c+48); 
+0

+1 pour nous rappeler la BIT- fonctionnalité de Matlab! – Jonas