X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=CreaPhase.git;a=blobdiff_plain;f=octave_packages%2Fsignal-1.1.3%2Fkaiser.m;fp=octave_packages%2Fsignal-1.1.3%2Fkaiser.m;h=dd4dfc7bac2753d2665d7d2a6d5871290ae2dd18;hp=0000000000000000000000000000000000000000;hb=c880e8788dfc484bf23ce13fa2787f2c6bca4863;hpb=1705066eceaaea976f010f669ce8e972f3734b05 diff --git a/octave_packages/signal-1.1.3/kaiser.m b/octave_packages/signal-1.1.3/kaiser.m new file mode 100644 index 0000000..dd4dfc7 --- /dev/null +++ b/octave_packages/signal-1.1.3/kaiser.m @@ -0,0 +1,55 @@ +## Copyright (C) 1995, 1996, 1997 Kurt Hornik +## Copyright (C) 2000 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 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 . + +## usage: kaiser (L, beta) +## +## Returns the filter coefficients of the L-point Kaiser window with +## parameter beta. +## +## For the definition of the Kaiser window, see A. V. Oppenheim & +## R. W. Schafer, "Discrete-Time Signal Processing". +## +## The continuous version of width L centered about x=0 is: +## +## besseli(0, beta * sqrt(1-(2*x/L).^2)) +## k(x) = -------------------------------------, L/2 <= x <= L/2 +## besseli(0, beta) +## +## See also: kaiserord + +function w = kaiser (L, beta = 0.5) + + if (nargin < 1) + print_usage; + elseif !(isscalar (L) && (L == round (L)) && (L > 0)) + error ("kaiser: L has to be a positive integer"); + elseif !(isscalar (beta) && (beta == real (beta))) + error ("kaiser: beta has to be a real scalar"); + endif + + if (L == 1) + w = 1; + else + m = L - 1; + k = (0 : m)'; + k = 2 * beta / m * sqrt (k .* (m - k)); + w = besseli (0, k) / besseli (0, beta); + endif + +endfunction + +%!demo +%! % use demo("kaiserord");