[Scilab-users] Trying to work a tukeywin function

Lester Anderson arctica1963 at gmail.com
Thu Sep 20 00:05:42 CEST 2012


Hello,

I have found the Matlab code for a tukeywin function but am unsure of the
conversion:

//  Copyright (C) 2007 Laurent Mazet <mazet at crm.mot.com>// //  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
<http://www.gnu.org/licenses/>.
//  -*- texinfo -*-//  @deftypefn {Function File} {@var{w} =} tukeywin
(@var{L}, @var{r})//  Return the filter coefficients of a Tukey window
(also known as the//  cosine-tapered window) of length @var{L}.
@var{r} defines the ratio//  between the constant section and and the
cosine section. It has to be//  between 0 and 1. The function returns
a Hanning window for @var{r}//  egals 0 and a full box for @var{r}
egals 1. By default @var{r} is set//  to 1/2.// //  For a definition
of the Tukey window, see e.g. Fredric J. Harris,//  "On the Use of
Windows for Harmonic Analysis with the Discrete Fourier//  Transform,
Proceedings of the IEEE", Vol. 66, No. 1, January 1978,//  Page 67,
Equation 38.//  @end deftypefn
function w=tukeywin(L, r= 1/2)

  if (nargin < 1 || nargin > 2)    ------ Not sure how to replace this
bit (variable not defined)
    print_usage;
  elseif (nargin == 2)
      //  check that 0 < r < 1
      if r > 1
        r = 1;
      elseif r < 0
        r = 0;
      endif
  endif

  //  generate window
  switch r   --------- think this should be select ?
    case 0,
      //  full box
      w = ones (L, 1);
    case 1,
      //  Hanning window
      w = hanning (L);
    otherwise   ------------- else
      //  cosine-tapered window
      t = linspace(0,1,L)(1:end/2)';
      w = (1 + cos(pi*(2*t/r-1)))/2;
      w(floor(r*(L-1)/2)+2:end) = 1;
      w = [w; ones(mod(L,2)); flipud(w)];
  endswitch  ------------------------------------ end ?
endfunction
// demo// L = 100;// r = 1/3;// w = tukeywin (L, r);//
title(sprintf("%d-point Tukey window, R = %d/%d", L, [p, q] = rat(r),
q));// plot(w);

I tried the mfile2sci conversion but this was not helpful. Found this
source in the Octave package.

Still learning scilab, so some pointers would be helpful.

Lester
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20120919/4eaf4d69/attachment.htm>


More information about the users mailing list