X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=CreaPhase.git;a=blobdiff_plain;f=octave_packages%2Fsignal-1.1.3%2Fwelchwin.m;fp=octave_packages%2Fsignal-1.1.3%2Fwelchwin.m;h=59cc98bd50f7699def45abe72a6d6fc00eeec759;hp=0000000000000000000000000000000000000000;hb=c880e8788dfc484bf23ce13fa2787f2c6bca4863;hpb=1705066eceaaea976f010f669ce8e972f3734b05 diff --git a/octave_packages/signal-1.1.3/welchwin.m b/octave_packages/signal-1.1.3/welchwin.m new file mode 100644 index 0000000..59cc98b --- /dev/null +++ b/octave_packages/signal-1.1.3/welchwin.m @@ -0,0 +1,97 @@ +## Copyright (C) 2007 Muthiah Annamalai +## Copyright (C) 2008-2009 Mike Gross +## Copyright (C) 2008-2009 Peter V. Lanspeary +## +## 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{w}] =} welchwin(@var{L},@var{c}) +## Returns a row vector containing a Welch window, given by +## @var{w}(n)=1-(n/N-1)^2, n=[0,1, ... @var{L}-1]. +## Argument @var{L} is the length of the window. +## Optional argument @var{c} specifies a "symmetric" window (the default), +## or a "periodic" window. +## +## A symmetric window has zero at each end and maximum in the middle; +## @var{L} must be an integer larger than 2. +## @code{if c=="symmetric", N=(L-1)/2} +## +## A periodic window wraps around the cyclic interval [0,1, ... @var{L}-1], +## and is intended for use with the DFT (functions fft(), +## periodogram() etc). +## @var{L} must be an integer larger than 1. +## @code{if c=="periodic", N=@var{L}/2}. +## +## @seealso{blackman, kaiser} +## @end deftypefn + +function [w] = welchwin(L,c) + if (nargin < 1 || nargin>2 ) + print_usage; + endif + symmetric=1; + if ( nargin==2 && ! isempty(c) ) + if ( ! ischar(c) || size(c,1) != 1 || + ( ! strcmp(c,'periodic') && ! strcmp(c,'symmetric') ) ) + error( "arg 2 (c) must be \"periodic\" or \"symmetric\"" ) + endif + symmetric = ! strcmp(c,'periodic'); + endif + ## + ## Periodic window is not properly defined if L<2. + ## Symmetric window is not properly defined if L<3. + min_L = 2 + symmetric; + if ( ! isreal(L) || ! isscalar(L) || L