/usr/share/octave/packages/audio-1.1.4/clip.m is in octave-audio 1.1.4-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | ## Copyright (C) 1999 Paul Kienzle
##
## 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, see <http://www.gnu.org/licenses/>.
## Clip values outside the range to the value at the boundary of the
## range.
##
## X = clip(X)
## Clip to range [0, 1]
##
## X = clip(X, hi)
## Clip to range [0, hi]
##
## X = clip(X, [lo, hi])
## Clip to range [lo, hi]
## TODO: more clip modes, such as three level clip(X, [lo, mid, hi]), which
## TODO: sends everything above hi to hi, below lo to lo and between to
## TODO: mid; or infinite peak clipping, which sends everything above mid
## TODO: to hi and below mid to lo.
function x = clip (x, range)
if (nargin == 2)
if (length(range) == 1)
range = [0, range];
end
elseif (nargin == 1)
range = [0, 1];
else
usage("X = clip(X [, range])");
end
try wfi = warning("query", "Octave:fortran-indexing").state;
catch wfi = "off";
end
unwind_protect
x (find (x > range (2))) = range (2);
x (find (x < range (1))) = range (1);
unwind_protect_cleanup
warning(wfi, "Octave:fortran-indexing");
end_unwind_protect
endfunction
%!error clip
%!error clip(1,2,3)
%!assert (clip(pi), 1)
%!assert (clip(-pi), 0)
%!assert (clip([-1.5, 0, 1.5], [-1, 1]), [-1, 0, 1]);
%!assert (clip([-1.5, 0, 1.5]', [-1, 1]'), [-1, 0, 1]');
%!assert (clip([-1.5, 1; 0, 1.5], [-1, 1]), [-1, 1; 0, 1]);
%!assert (isempty(clip([],1)));
|