X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=octave_packages%2Fcommunications-1.1.1%2Foct2dec.m;fp=octave_packages%2Fcommunications-1.1.1%2Foct2dec.m;h=8ce5a5baeffa8f7bea4c25d71f1c4ef91eaf55c4;hb=f5f7a74bd8a4900f0b797da6783be80e11a68d86;hp=0000000000000000000000000000000000000000;hpb=1705066eceaaea976f010f669ce8e972f3734b05;p=CreaPhase.git diff --git a/octave_packages/communications-1.1.1/oct2dec.m b/octave_packages/communications-1.1.1/oct2dec.m new file mode 100644 index 0000000..8ce5a5b --- /dev/null +++ b/octave_packages/communications-1.1.1/oct2dec.m @@ -0,0 +1,61 @@ +## Copyright (C) 2007 Sylvain Pelissier +## +## 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 3 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, see . + +## -*- texinfo -*- +## @deftypefn {Function File} @var{d} = oct2dec (@var{c}) +## +## Convert octal to decimal values. +## +## Each element of the octal matrix @var{c} is converted to a decimal value. +## +## @seealso{base2dec,bin2dec,dec2bin} +## @end deftypefn + +function d = oct2dec (c) + + if (nargin != 1) + print_usage (); + endif + + # Check for negative or non-integer values + if (any (c(:) < 0) || any (c(:) != floor (c(:)))) + error ("oct2dec: c must be an octal matrix"); + endif + + d = zeros (size (c)); + l = size (c, 2); + for k = 1:l + str = num2str (c(:,k), "%ld"); + d(:,k) = base2dec (str, 8); + if (any (isnan (d(:,k)))) + error ("oct2dec: c must be an octal matrix"); + endif + endfor + +endfunction + +%!shared x,y +%! x = reshape ([0:79], 10, 8)(1:8,:); +%! y = reshape ([0:63], 8, 8); +%!assert (oct2dec (0), 0) +%!assert (oct2dec (77777777), 2^24 - 1) +%!assert (oct2dec (x), y) + +%% Test input validation +%!error oct2dec () +%!error oct2dec (0, 0) +%!error oct2dec (0.1) +%!error oct2dec (-1) +%!error oct2dec (8)