How to convert signed integer (from -8 to 7) into 4 bit signed binary
Afficher commentaires plus anciens
I wanted to convert a vector (approximately 270k entries) of integers ranged from -8 to 7 into 4 bit signed binary, and I used
dec2bin((typecast(int8(Data), 'uint8')), 8)
to find the 8 bit signed binary for my data. However I need to take either the upper 4 bits of the 8 bits, or convert them into 4 bit signed binary directly from the integers as they can be expressed as 2's complement 4 bit signed binary. Could anyone teach me how to do that?
My current situation: I have all of them as 8 bit signed binary, but some entries only appear as '10', '1', '11', etc. i.e. not 8 bits even though I tried to use
dec2bin(d, n)
So when I tried to convert the numbers to strings and take the first 4 bits with
num2str
all I would get are spaces.
Any help would be greatly appreciated!!
Réponses (1)
Walter Roberson
le 27 Nov 2017
int2bin4 = dec2bin([15:-1:8,0:7],4) - '0'; %or leave out the '0' if you want character output;
translated_vector = int2bin4(YourVector(:) + 9, :);
4 commentaires
Jeffrey Chen
le 27 Nov 2017
Walter Roberson
le 27 Nov 2017
What is min() of your data? Your question says that it is -8 but the error message implies that it might be more negative.
Or possibly there are non-integer values or NaN or inf values:
nnz(isnan(YourVector))
nnz(isinf(YourVector))
nnz(YourVector ~= floor(YourVector))
All three of those should come out as 0 if the data is in the range you indicated.
Jeffrey Chen
le 27 Nov 2017
Walter Roberson
le 27 Nov 2017
Data_int = int2bin4(floor(Data_original * 15/2) + 9, :) ;
int2bin4 is acting as a lookup table to provide an efficient way to do the data conversion
Catégories
En savoir plus sur Logical dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!