Q:

Convert Decimal to Binary Vector

I need to convert a Decimal Number to a Binary Vector
For example, Something like this:
  length=de2bi(length_field,16);

Unfortunately, because of licensing, I cannot use this command. Is there any quick short technique for converting binary to a vector.
Here is what I am looking for,
If 
Data=12;
Bin_Vec=Binary_To_Vector(Data,6) should return me
Bin_Vec=[0 0 1 1 0 0]

Thanks

A:

You mention not being able to use the function de2bi, which is likely because it is a function in the Communications System Toolbox and you don't have a license for it. Luckily, there are two other functions that you can use that are part of the core MATLAB toolbox: BITGET and DEC2BIN. I generally lean towards using BITGET since DEC2BIN can be significantly slower when converting many values at once. Here's how you would use BITGET:
>> Data = 12;                  %# A decimal number
>> Bin_Vec = bitget(Data,1:6)  %# Get the values for bits 1 through 6

Bin_Vec =

     0     0     1     1     0     0

A:

A single call to Matlab's built-in function dec2bin can achieve this:
binVec = dec2bin(data, nBits)-'0'

A:

Here's a solution that is reasonably fast:
function out = binary2vector(data,nBits)

powOf2 = 2.^[0:nBits-1];

%# do a tiny bit of error-checking
if data > sum(powOf2)
   error('not enough bits to represent the data')
end

out = false(1,nBits);

ct = nBits;

while data>0
if data >= powOf2(ct)
data = data-powOf2(ct);
out(ct) = true;
end
ct = ct - 1;
end

To use:
out = binary2vector(12,6)
out =
     0     0     1     1     0     0

out = binary2vector(22,6)
out =
     0     1     1     0     1     0

