www.gusucode.com > GPS仿真Matlab编程源码程序 > GPS仿真Matlab编程源码程序/include/twosComp2dec.m

    function intNumber = twosComp2dec(binaryNumber)
% TWOSCOMP2DEC(binaryNumber) Converts a two's-complement binary number
% BINNUMBER (in Matlab it is a string type), represented as a row vector of
% zeros and ones, to an integer. 
%
%intNumber = twosComp2dec(binaryNumber)

%--------------------------------------------------------------------------
%                           SoftGNSS v3.0
% 
% Copyright (C) Darius Plausinaitis
% Written by Darius Plausinaitis
%--------------------------------------------------------------------------
%This program is free software; you can redistribute it and/or
%modify it under the terms of the GNU General Public License
%as published by the Free Software Foundation; either version 2
%of the License, or (at your option) any later version.
%
%This program is distributed in the hope that it will be useful,
%but WITHOUT ANY WARRANTY; without even the implied warranty of
%MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%GNU General Public License for more details.
%
%You should have received a copy of the GNU General Public License
%along with this program; if not, write to the Free Software
%Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
%USA.
%--------------------------------------------------------------------------

% CVS record:
% $Id: twosComp2dec.m,v 1.1.2.4 2006/08/14 11:38:22 dpl Exp $

%--- Check if the input is string -----------------------------------------
if ~isstr(binaryNumber)
    error('Input must be a string.')
end

%--- Convert from binary form to a decimal number -------------------------
intNumber = bin2dec(binaryNumber);

%--- If the number was negative, then correct the result ------------------
if binaryNumber(1) == '1'
    intNumber = intNumber - 2^size(binaryNumber, 2);
end