Binary
to decimal - Four ways to convert formats
in Matlab
In this article we're going to present four variations of a binary to
decimal conversion in Matlab; we're going to convert
binary numbers (numbers with
only symbols '0' and '1') to decimal
numbers
(numbers with 10 different symbols, from '0' to '9').
First, I'm going to show you a video explaining the general
ideas behind a base conversion. Later, I'm going to
show you the ideas to make it happen in Matlab.
As you may know, a number expressed in decimal format (the common way
to express a number, also called base 10) consists of additions of
digits raised to the different powers of 10.
For example:
1528 (base
10) means 1 x 103 + 5 x 102
+ 2 x 101
+ 8 x 100
Following the same reasoning, a binary number (called to be in base 2)
consists of additions of binary digits raised to the different powers
of 2. For example:
1010
(base 2) means 1 x 23
+ 0 x 102 + 1 x 101
+ 0 x 20
1st. Method: using the bin2dec function.
The 'bin2dec'
built-in function converts a binary number string to a decimal number.
Example:
bin_nr =
'110101';
dec =
bin2dec(bin_nr)
The result is dec
= 53.
2nd. Method: using a for-loop.
In the event that we cannot use the bin2dec function for any reason, we
have to elaborate an alternative. In this case, we just follow the
logic explained above: every digit found in the input string is
obtained with every iteration and it is converted into a real number
(in this case the input is a string, not a number, that's why
we
use the instruction 'str2num').
bin_nr =
'110101';
dec = 0;
for i = 1 :
length(bin_nr)
dec
= dec + str2num(bin_nr(i)) *
2^(length(bin_nr) - i);
end
dec
As expected, the result
is also dec
= 53.
3rd. Method: using a while-loop.
Now, we make a small change in
the logic to work with a while-loop instead of a for-loop, just for a
variation. The idea is the same, but we have to add an index to keep
track of the appropriate power of the digit to be considered. This
binary to decimal conversion also includes input from the user:
bin_nr =
input('Enter
your binary number: ', 's');
dec = 0;
i = 1;
while i <
length(bin_nr) + 1
dec
= dec + str2num(bin_nr(i)) *
2^(length(bin_nr) - i);
i
= i + 1;
end
dec
4rd. Method: using 'polyval'.
As seen in the articles about polynomials and curve fitting (see Table
of Contents), the 'polyval'
function
with arguments (p, x) returns the
value of a polynomial of degree n
evaluated at x.
The input argument p
is a vector of length n+1
whose elements are the coefficients in descending powers of the
polynomial to be evaluated. This is exactly what we need if the input
is in vector form. In other words, the expected result is:
y = p1xn
+ p2xn-1
+ ... + pnx + pn+1
And that's achieved this way:
bin_nr =
[1 1 0 1 0 1];
dec =
polyval(bin_nr, 2)
From
'Binary to decimal' to home
From 'Binary to
decimal' to Matlab Programming
|
|