v_windows

PURPOSE ^

V_WINDOWS Generate a standard windowing function (TYPE,N,MODE,P,H)

SYNOPSIS ^

function w = v_windows(wtype,n,mode,p,ov)

DESCRIPTION ^

V_WINDOWS Generate a standard windowing function (TYPE,N,MODE,P,H)
 Usage: (1) w=v_windows(3,n)';         % same as w=hamming(n);
        (2) w=v_windows(3,n,'l')';     % same as w=hanning(n,'periodic');
        (3) w=v_windows(2,n)';         % same as w=hanning(n);
        (4) w=v_windows(2,n,'l')';     % same as w=hanning(n,'periodic');
        (5) v_windows('hamming');      % plot window information

 Inputs:   WTYPE  is a string or integer specifying the window type (see below)
           N      is the number of output points to generate (actually FLOOR(N))
                  and also determines the period of the underlying window [default 256]
           MODE   is a string specifying various options (see below)
           P      is a vector of parameters required for some window types
           OV     is the overlap in samples between succesive windows (must be H<=N/2 and
                  used only for the 'o' option) [default floor(N/2)]

 Outputs:  W(1,N)   is the output window. If no output is specified, a graph
                  of the window and its frequency response will be drawn.

 The WTYPE input specifies one of the following window types (either name, short or code can be used):

       Name     Short Code  Params
    'blackman'   'b'    6
    'cauchy'     'y'   13     1
    'cos'        'c'   10     1      cos window to the power P [default P=1]
    'dolph'      'd'   14     1      Dolph-Chebyshev window with sideband attenuation P dB [default P=50]
                                     Note that this window has impulses at the two ends.
    'gaussian'      'g'   12     1      truncated at +-P std deviations [default P=3]
    'hamming'    'm'    3
    'hanning'    'n'    2            also called "hann" or "von hann"
    'harris3'      '3'    4            3-term blackman-harris with 67dB sidelobes
    'harris4'      '4'    5            4-term blackman-harris with 92dB sidelobes
    'kaiser'      'k'   11     1      with parameter P (often called beta) [default P=8]
    'rectangle'  'r'    1
    'triangle'   't'    9     1      triangle to the power P [default P=1]
    'tukey'      'u'   15     1      cosine tapered 0<P<1 [default P=0.5]
    'vorbis'     'v'    7            perfect reconstruction window from [2] (use mode='sE2')
    'rsqvorbis'  'w'    8            raised squared vorbis with lower sidelobes (use mode='sdD2')

 Window equivalences:

    'hanning'   =    cos(2) = tukey(1)
    'rectangle' =    tukey(0)
    'reisz'     =    triangle(2)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 The MODE input determines the scaling and sampling of the window function and
     is a text string with characters whose meanings are given below. The
     default is 'ubw' for window functions whose end points are non-zero and 'unw'
     for window functions whose end points are zero (e.g. hanning window)

         scaling:
                1-9 = set target gain to G = 1/n in scaling options [default n=1 so G=1]
                  u = unscaled  with the peak of the underlying continuous
                      window equalling G. [default]
                  p = scaled to make the actual peak G
                  d = scaled to make DC gain equal to G (summed sample values).
                  D = scaled to make average value equal G
                  e = scaled to make energy = G (summed squared sample values).
                  E = scaled to make mean energy = G (mean squared sample values).
                  q = take square root of the window after scaling

         first and last samples (see note on periodicity below):
                  b [both]    = The first and last samples are at the extreme ends of
                                the window [default for most windows].
                  n [neither] = The first and last samples are one sample away from the ends
                                of the window [default for windows having zero end points].
                  s [shifted] = The first and last samples are half a sample away from the
                                ends of the window .
                  l [left]    = The first sample is at the end of the window while the last
                                is one sample away from the end .
                  r [right]   = The first sample is one sample away from the end while the
                                last is at the end of the window .

         whole/half window (see note on periodicity below):
                  w = The whole window is included [default]
                  c = The first sample starts in the centre of the window
                  h = The first sample starts half a sample beyond the centre

         convolve with rectangle
                  o = convolve w(n) with a rectangle of length N-H [default floor(N/2)]
                      This can be used to force w(n) to satisfy the Princen-Bradley condition

 Periodicity:
     The underlying period of the window function depends on the chosen mode combinations and
     is given in the table below. For overlapping windows with perfect reconstruction choose
     N to be an integer and modes 'ws', 'wl' or 'wr'.

        Whole/half window -->     w         h         c

        End points:       b      N-1      2N-1      2N-2
                          n      N+1      2N+1       2N
                          s       N        2N       2N-1
                          l       N       2N+1       2N
                          r       N       2N-1      2N-2

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 To obtain unity gain for windowed overlap-add processing you can use
 the following. Bandwidths have been multiplied by the window length.
 For perfect reconstruction, you can use any multiple of the overlap factors
 shown assuming the same window is used for both analysis and synthesis.
 These are the Princen-Bradley conditions: fliplr(w)=w, w(i)^2+w(i+n/2)^2=1
 Any symmetric window will satisfy the conditions with mode 'boqD2' [3].

   Window     Mode Overlap-Factor Sidelobe  3dB-BW  6dB-BW Equiv-noise-BW
   rectangle  E        1           -13dB     0.9      1.2      1.0
   rsqvorbis  sqD2     2           -26dB     1.1      1.5      1.1
   hamming    sqD2     2,3,5       -24dB     1.1      1.5      1.1
   hanning    sqD2     2,3,5       -23dB     1.2      1.6      1.2 =cos('sE2')
   cos        sE2      2,3,5       -23dB     1.2      1.6      1.2 used in MP3
   kaiser(5)  boqD2    2           -23dB     1.2      1.7      1.3 used in AAC [4]
   vorbis     sE2      2,9,15      -21dB     1.3      1.8      1.4 used in Vorbis
   hamming    sE4      3,4,5       -43dB     1.3      1.8      1.4
   hanning    sE4      3,4,5       -31dB     1.4      2.0      1.5
 The integer following D or E in the mode string should match the overlap factor

 References:
  [1]  F. J. Harris. On the use of windows for harmonic analysis with the
       discrete fourier transform. Proc IEEE, 66 (1): 51-83, Jan. 1978.
  [2]    L. D. Fielder, M. Bosi, G. Davidson, M. Davis, C. Todd, and S. Vernon.
       AC-2 and AC-3: Low-complexity transform-based audio coding.
       In Audio Engineering Society Conference: Collected Papers on Digital Audio Bit-Rate Reduction, May 1996.
  [3]    J. Princen, A. Johnson, and A. Bradley. Subband/transform coding using filter
       bank designs based on time domain aliasing cancellation.
       In Proc. IEEE Intl Conf. Acoustics, Speech and Signal Processing, volume 12,
       pages 2161-2164, 1987. doi: 10.1109/ICASSP.1987.1169405.
  [4]    T. Sporer, K. Brandenburg, and B. Edler.
       The use of multirate filter banks for coding of high quality digital audio.
       In Proc EUSIPCO, volume 1, pages 211-214, 1992.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      Copyright (C) Mike Brookes 2002-2015
      Version: $Id: v_windows.m 10477 2018-06-03 16:16:45Z dmb $

   VOICEBOX is a MATLAB toolbox for speech processing.
   Home page: http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   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 can obtain a copy of the GNU General Public License from
   http://www.gnu.org/copyleft/gpl.html or by writing to
   Free Software Foundation, Inc.,675 Mass Ave, Cambridge, MA 02139, USA.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function w = v_windows(wtype,n,mode,p,ov)
0002 %V_WINDOWS Generate a standard windowing function (TYPE,N,MODE,P,H)
0003 % Usage: (1) w=v_windows(3,n)';         % same as w=hamming(n);
0004 %        (2) w=v_windows(3,n,'l')';     % same as w=hanning(n,'periodic');
0005 %        (3) w=v_windows(2,n)';         % same as w=hanning(n);
0006 %        (4) w=v_windows(2,n,'l')';     % same as w=hanning(n,'periodic');
0007 %        (5) v_windows('hamming');      % plot window information
0008 %
0009 % Inputs:   WTYPE  is a string or integer specifying the window type (see below)
0010 %           N      is the number of output points to generate (actually FLOOR(N))
0011 %                  and also determines the period of the underlying window [default 256]
0012 %           MODE   is a string specifying various options (see below)
0013 %           P      is a vector of parameters required for some window types
0014 %           OV     is the overlap in samples between succesive windows (must be H<=N/2 and
0015 %                  used only for the 'o' option) [default floor(N/2)]
0016 %
0017 % Outputs:  W(1,N)   is the output window. If no output is specified, a graph
0018 %                  of the window and its frequency response will be drawn.
0019 %
0020 % The WTYPE input specifies one of the following window types (either name, short or code can be used):
0021 %
0022 %       Name     Short Code  Params
0023 %    'blackman'   'b'    6
0024 %    'cauchy'     'y'   13     1
0025 %    'cos'        'c'   10     1      cos window to the power P [default P=1]
0026 %    'dolph'      'd'   14     1      Dolph-Chebyshev window with sideband attenuation P dB [default P=50]
0027 %                                     Note that this window has impulses at the two ends.
0028 %    'gaussian'      'g'   12     1      truncated at +-P std deviations [default P=3]
0029 %    'hamming'    'm'    3
0030 %    'hanning'    'n'    2            also called "hann" or "von hann"
0031 %    'harris3'      '3'    4            3-term blackman-harris with 67dB sidelobes
0032 %    'harris4'      '4'    5            4-term blackman-harris with 92dB sidelobes
0033 %    'kaiser'      'k'   11     1      with parameter P (often called beta) [default P=8]
0034 %    'rectangle'  'r'    1
0035 %    'triangle'   't'    9     1      triangle to the power P [default P=1]
0036 %    'tukey'      'u'   15     1      cosine tapered 0<P<1 [default P=0.5]
0037 %    'vorbis'     'v'    7            perfect reconstruction window from [2] (use mode='sE2')
0038 %    'rsqvorbis'  'w'    8            raised squared vorbis with lower sidelobes (use mode='sdD2')
0039 %
0040 % Window equivalences:
0041 %
0042 %    'hanning'   =    cos(2) = tukey(1)
0043 %    'rectangle' =    tukey(0)
0044 %    'reisz'     =    triangle(2)
0045 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0046 %
0047 % The MODE input determines the scaling and sampling of the window function and
0048 %     is a text string with characters whose meanings are given below. The
0049 %     default is 'ubw' for window functions whose end points are non-zero and 'unw'
0050 %     for window functions whose end points are zero (e.g. hanning window)
0051 %
0052 %         scaling:
0053 %                1-9 = set target gain to G = 1/n in scaling options [default n=1 so G=1]
0054 %                  u = unscaled  with the peak of the underlying continuous
0055 %                      window equalling G. [default]
0056 %                  p = scaled to make the actual peak G
0057 %                  d = scaled to make DC gain equal to G (summed sample values).
0058 %                  D = scaled to make average value equal G
0059 %                  e = scaled to make energy = G (summed squared sample values).
0060 %                  E = scaled to make mean energy = G (mean squared sample values).
0061 %                  q = take square root of the window after scaling
0062 %
0063 %         first and last samples (see note on periodicity below):
0064 %                  b [both]    = The first and last samples are at the extreme ends of
0065 %                                the window [default for most windows].
0066 %                  n [neither] = The first and last samples are one sample away from the ends
0067 %                                of the window [default for windows having zero end points].
0068 %                  s [shifted] = The first and last samples are half a sample away from the
0069 %                                ends of the window .
0070 %                  l [left]    = The first sample is at the end of the window while the last
0071 %                                is one sample away from the end .
0072 %                  r [right]   = The first sample is one sample away from the end while the
0073 %                                last is at the end of the window .
0074 %
0075 %         whole/half window (see note on periodicity below):
0076 %                  w = The whole window is included [default]
0077 %                  c = The first sample starts in the centre of the window
0078 %                  h = The first sample starts half a sample beyond the centre
0079 %
0080 %         convolve with rectangle
0081 %                  o = convolve w(n) with a rectangle of length N-H [default floor(N/2)]
0082 %                      This can be used to force w(n) to satisfy the Princen-Bradley condition
0083 %
0084 % Periodicity:
0085 %     The underlying period of the window function depends on the chosen mode combinations and
0086 %     is given in the table below. For overlapping windows with perfect reconstruction choose
0087 %     N to be an integer and modes 'ws', 'wl' or 'wr'.
0088 %
0089 %        Whole/half window -->     w         h         c
0090 %
0091 %        End points:       b      N-1      2N-1      2N-2
0092 %                          n      N+1      2N+1       2N
0093 %                          s       N        2N       2N-1
0094 %                          l       N       2N+1       2N
0095 %                          r       N       2N-1      2N-2
0096 %
0097 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0098 % To obtain unity gain for windowed overlap-add processing you can use
0099 % the following. Bandwidths have been multiplied by the window length.
0100 % For perfect reconstruction, you can use any multiple of the overlap factors
0101 % shown assuming the same window is used for both analysis and synthesis.
0102 % These are the Princen-Bradley conditions: fliplr(w)=w, w(i)^2+w(i+n/2)^2=1
0103 % Any symmetric window will satisfy the conditions with mode 'boqD2' [3].
0104 %
0105 %   Window     Mode Overlap-Factor Sidelobe  3dB-BW  6dB-BW Equiv-noise-BW
0106 %   rectangle  E        1           -13dB     0.9      1.2      1.0
0107 %   rsqvorbis  sqD2     2           -26dB     1.1      1.5      1.1
0108 %   hamming    sqD2     2,3,5       -24dB     1.1      1.5      1.1
0109 %   hanning    sqD2     2,3,5       -23dB     1.2      1.6      1.2 =cos('sE2')
0110 %   cos        sE2      2,3,5       -23dB     1.2      1.6      1.2 used in MP3
0111 %   kaiser(5)  boqD2    2           -23dB     1.2      1.7      1.3 used in AAC [4]
0112 %   vorbis     sE2      2,9,15      -21dB     1.3      1.8      1.4 used in Vorbis
0113 %   hamming    sE4      3,4,5       -43dB     1.3      1.8      1.4
0114 %   hanning    sE4      3,4,5       -31dB     1.4      2.0      1.5
0115 % The integer following D or E in the mode string should match the overlap factor
0116 %
0117 % References:
0118 %  [1]  F. J. Harris. On the use of windows for harmonic analysis with the
0119 %       discrete fourier transform. Proc IEEE, 66 (1): 51-83, Jan. 1978.
0120 %  [2]    L. D. Fielder, M. Bosi, G. Davidson, M. Davis, C. Todd, and S. Vernon.
0121 %       AC-2 and AC-3: Low-complexity transform-based audio coding.
0122 %       In Audio Engineering Society Conference: Collected Papers on Digital Audio Bit-Rate Reduction, May 1996.
0123 %  [3]    J. Princen, A. Johnson, and A. Bradley. Subband/transform coding using filter
0124 %       bank designs based on time domain aliasing cancellation.
0125 %       In Proc. IEEE Intl Conf. Acoustics, Speech and Signal Processing, volume 12,
0126 %       pages 2161-2164, 1987. doi: 10.1109/ICASSP.1987.1169405.
0127 %  [4]    T. Sporer, K. Brandenburg, and B. Edler.
0128 %       The use of multirate filter banks for coding of high quality digital audio.
0129 %       In Proc EUSIPCO, volume 1, pages 211-214, 1992.
0130 %
0131 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0132 %      Copyright (C) Mike Brookes 2002-2015
0133 %      Version: $Id: v_windows.m 10477 2018-06-03 16:16:45Z dmb $
0134 %
0135 %   VOICEBOX is a MATLAB toolbox for speech processing.
0136 %   Home page: http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html
0137 %
0138 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0139 %   This program is free software; you can redistribute it and/or modify
0140 %   it under the terms of the GNU General Public License as published by
0141 %   the Free Software Foundation; either version 2 of the License, or
0142 %   (at your option) any later version.
0143 %
0144 %   This program is distributed in the hope that it will be useful,
0145 %   but WITHOUT ANY WARRANTY; without even the implied warranty of
0146 %   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0147 %   GNU General Public License for more details.
0148 %
0149 %   You can obtain a copy of the GNU General Public License from
0150 %   http://www.gnu.org/copyleft/gpl.html or by writing to
0151 %   Free Software Foundation, Inc.,675 Mass Ave, Cambridge, MA 02139, USA.
0152 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0153 persistent wnam wnami wnamp
0154 if isempty(wnam)
0155     wnam={'rectangle','hanning','hamming','harris3','harris4','blackman',...
0156         'vorbis','rsqvorbis','triangle','cos','kaiser','gaussian',...
0157         'cauchy','dolph','tukey','r','n','m','3','4','b','v','w','t','c','k','g','y','d','u'};
0158     wnami=[1:15 1:15];
0159     wnamp=[0 0 0 0 0 0 0 0 1 1 1 1 1 1 1]; % parameters required
0160 end
0161 kk=[-1 1 1 -1; 0 0 2 -2; 0 1 2 -1;    % mode  w,  h,  c  [normal windows]
0162     -1 0 1 0; 0 0 2 0; 0 1 2 1;       % modes lw, lh, lc
0163     -1 2 1 0; 0 0 2 -2; 0 1 2 -1;     % modes rw, rh, rc
0164     -1 1 1 -1; 0 0 2 -2; 0 1 2 -1;    % modes bw, bh, bc
0165     -1 1 1 1; 0 0 2 0; 0 1 2 1;       % modes nw, nh, nc
0166     -1 1 1 0; 0 0 2 -1; 0 1 2 0;];    % modes sw, sh, sc
0167 
0168 if nargin<2 || isempty(n)
0169     n=2520;                         % 2^3 * 3^2 * 5 * 7
0170 end
0171 if nargin<3 || isempty(mode) || ~ischar(mode)
0172     mode='uw';                      % default to unscaled full window
0173 end
0174 mm=zeros(1,length(mode)+1);
0175 ll='hc lrbns';
0176 for i=1:8
0177     mm(mode==ll(i))=i-3;
0178 end
0179 if ischar(wtype)
0180     wtype=wnami(find(strcmpi(lower(wtype),wnam),1)); % convert window type to integer
0181 end
0182 k=1+3*max(mm)-min(mm);              % min(mm) gives whole/half window, max(mm) gives window positioning
0183 if k<4
0184     k=k+12*any(wtype==[2 6 7 9 10 15]); % if window is zero at ends add 12 to default to the 'n' option
0185 end
0186 if any(mode=='o')                   % need to convolve with rectangle
0187     if nargin<5 || ~numel(h)
0188         ov=floor(n/2);
0189     end
0190     n=n-ov+1;                       % shorten baseline window
0191 else
0192     ov=0;
0193 end
0194 
0195 % determine the sample points
0196 % the number of points corresponding to a full period is (kk(k,3)*n+kk(k,4))
0197 fn=floor(n);
0198 kp=(kk(k,3)*n+kk(k,4)); % number of points corresponding to a full period
0199 ks=kk(k,1)*fn+kk(k,2);
0200 v=((0:2:2*fn-2)+ks)/kp;
0201 
0202 % now make the window
0203 
0204 switch wtype
0205     case 1 % 'rectangle'
0206         w = ones(size(v));     
0207     case 2 % 'hanning'
0208         w = 0.5+0.5*cos(pi*v);             
0209     case 3 % 'hamming'
0210         w = 0.54+0.46*cos(pi*v);        
0211     case 4 % 'harris3'
0212         w = 0.42323 + 0.49755*cos(pi*v) + 0.07922*cos(2*pi*v);        
0213     case 5 % 'harris4'
0214         w = 0.35875 + 0.48829*cos(pi*v) + 0.14128*cos(2*pi*v) + 0.01168*cos(3*pi*v);        
0215     case 6 % 'blackman'
0216         w = 0.42+0.5*cos(pi*v) + 0.08*cos(2*pi*v);        
0217     case 7 % 'vorbis'
0218         w = sin(0.25*pi*(1+cos(pi*v)));        
0219     case 8 % 'rsqvorbis'
0220         w = 0.571-0.429*cos(0.5*pi*(1+cos(pi*v)));        
0221     case 9 % 'triangle'
0222         if nargin<4, p=1; end;
0223         w = 1-abs(v).^p(1);
0224     case 10 % 'cos'
0225         if nargin<4, p=1; end;
0226         w = cos(0.5*pi*v).^p(1);        
0227     case 11 % 'kaiser'
0228         if nargin<4, p=8; end;
0229         w=besseli(0,p*sqrt(1-v.^2))/besseli(0,p(1));        
0230     case 12 % 'gaussian'
0231         if nargin<4, p=3; end;
0232         w=exp(-0.5*p(1)^2*(v.*v));     
0233     case 13 % 'cauchy'
0234         if nargin<4, p=1; end;
0235         w = (1+(p(1)*v).^2).^-1;
0236     case 14 % 'dolph'
0237         if nargin<4, p=50; end;
0238         if rem(ks+kp,2)     % for shifted windows, we generate twice as many points
0239             w=chebwin(2*kp+1,abs(p(1)));
0240             w=w((1:2:2*fn)+round(ks+kp));
0241         else
0242             w=chebwin(kp+1,abs(p(1)));
0243             w=w((1:fn)+round((ks+kp)/2));
0244         end        
0245     case 15 % 'tukey'
0246         if nargin<4, p=0.5; end;
0247         if p(1)>0
0248             p(1)=min(p(1),1);
0249             w = 0.5+0.5*cos(pi*max(1+(abs(v)-1)/p(1),0));
0250         else
0251             w = ones(size(v));
0252         end    
0253     otherwise
0254         error(sprintf('Unknown window type: %s', wtype));
0255 end;
0256 % now convolve with rectangle
0257 if ov
0258     %     w=filter(ones(1,ov),1,w); % more adds but might be just as efficient as cumsum
0259     w=cumsum(w);
0260     w(n+1:n+ov-1)=w(n)-w(n-ov+1:n-1);
0261     w(ov+1:n)=w(ov+1:n)-w(1:n-ov);
0262     n=n+ov-1; % restore original value of n
0263 end
0264 % scale if required
0265 mk=find(mode>='1' & mode<='9',1);
0266 if numel(mk)
0267     g=1/(mode(mk)-'0');
0268 else
0269     g=1;
0270 end
0271 if any(mode=='d')
0272     w=w*(g/sum(w));
0273 elseif any(mode=='D') || any(mode=='a')
0274     w=w*(g/mean(w));
0275 elseif any(mode=='e')
0276     w=w*sqrt(g/sum(w.^2));
0277 elseif any(mode=='E')
0278     w=w*sqrt(g/mean(w.^2));
0279 elseif any(mode=='p')
0280     w=w*(g/max(w));
0281 end
0282 if any(mode=='q')
0283     w=sqrt(w);
0284 end
0285 if ~nargout
0286     v_windinfo(w,n);
0287     np=wnamp(wtype); % number of parameters
0288     if np>0
0289         title(sprintf('%s(%s) window  - mode=''%s''',wnam{wtype},sprintf('%g',p(1:np)),mode));
0290     else
0291         title(sprintf('%s window - mode=''%s''',wnam{wtype},mode));
0292     end
0293 end
0294

Generated by m2html © 2003