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');

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

Generated by m2html © 2003