logo for matrixlab-examples.com
[?] Subscribe To This Site

XML RSS
Add to Google
Add to My Yahoo!
Add to My MSN
Subscribe with Bloglines


Home
Welcome Matrixmania Blog
-> Sitemap / Search <-
-> Books <-
Forums and Help
Contact
Basics Quick Matlab Guide
Matlab Tutorial
Matlab Examples
Matlab Flow Control
Boolean Logic
Plots and GUI Matlab 2D Plots
Matlab 3D Plots
Matlab GUI
Applications Calculus
Linear Algebra
Matlab Cookbook I
Matlab Cookbook II
Electrical Calculations
Probability and Stats
Finance Apps
Other Relevant Links
Notes on Computing
Online Calculators
Fun!
Your own Website?
Terms/Policies
leftimage for matrixlab-examples.com

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').

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
       

Online Base Converter

Dec-to-Bin conversion

Gray Code

Top



footer for binary to decimal page