/*
Copyright (C) 2015 Oscar Monerris Belda
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 .
Author: Oscar Monerris Belda
Created: 2015-12-07
*/
#include
DEFUN_DLD(wrapToPi, args, nargout, "\
wrapToPi: coherce the input value/es to the [-pi,pi] range. [y] = wrapToPi(x) \n\
")
{
int nargin = args.length ();
if (nargin != 1)
{
error("Wrong number of input parameters");
return octave_value(-1);
}
Matrix arr(args(0).matrix_value());
Matrix retval(arr);
double tmp;
double ipi = 1/M_PI;
for (int id1 = 0; id1 < arr.length(); id1++)
{
tmp = fmod(arr(id1)*ipi,2.0);
retval(id1) = M_PI*(tmp - 2.0* (tmp > 1 ? 1 : 0));
}
//
// ## Copyright (C) 2015 Òscar Monerris Belda
// ##
// ## 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{xwrap} =} wrapToPi (@var{x})
// ##
// ## Wraps x into the -pi to pi interval
// ##
// ## @var{x}: angle in radians (single value or vector)
// ##
// ## @example
// ## -pi/2 = wrapToPi(3*pi/2)
// ## @end example
// ##
// ## @seealso{unwrap}
// ## @end deftypefn
//
// ## Author: Òscar Monerris Belda
// ## Created: 2015-08-23
// ## v 0.1
//
// function xwrap = wrapToPi(x)
// % Wraps x into the -pi to pi interval
// %
// % Oscar Monerris Belda 15/08/2015
// % v1.0
// %
// % Usage: y = wrapToPi(x);
// % x can be a single value or a vector
// x = x/pi;
// xwrap = pi*(mod(x,2) - 2*(mod(x,2) > 1));
//
//
//
// end
return octave_value(retval);
}