[Scilab-users] Trying to work a tukeywin function

Lester Anderson arctica1963 at gmail.com
Thu Sep 20 08:20:37 CEST 2012


Hi Samuel,
Thanks for the pointers. It still fails with lots of errors even with
changing the sections you noted). I have copied the errors here, it is like
a few errors can have a compound effect on the rest:

-->exec('C:\Users\Lester\Documents\3DInver\convert\tukeywin.sce', -1)
function w = tukeywin (L, r = 1/2)
                            !--error 37
Incorrect function at line 31.

at line      31 of exec file called by :
exec('C:\Users\Lester\Documents\3DInver\convert\tukeywin.sce', -1)

-->function w = tukeywin (L, r = 1/2)
                            !--error 37
Incorrect function.

-->  //nargin=>argn(2)
 -->  // if (nargin < 1 || nargin > 2)
 -->  if (argn(2) < 1 || argn(2) > 2)
                    !--error 2
Invalid factor.

-->      print_usage;
        !--error 4
Undefined variable: print_usage

-->  elseif (nargin == 2)
  !--error 34
Incorrect control instruction syntax.

-->      //  check that 0 < r < 1
 -->      if r > 1
           !--error 4
Undefined variable: r

-->        r = 1;
-->      elseif r < 0
  !--error 34
Incorrect control instruction syntax.

-->        r = 0;
 -->      end
  !--error 34
Incorrect control instruction syntax.

-->  end
  !--error 34
Incorrect control instruction syntax.

-->  //  generate window
-->  select r
-->    case 0,
-->      //  full box
-->      w = ones (L, 1);
                  !--error 4
Undefined variable: L

-->    case 1,
  !--error 34
Incorrect control instruction syntax.

-->      //  Hanning window
 -->     // = hanning (L);
 -->     window('hanning',L)
                        !--error 4
Undefined variable: L

-->     else
  !--error 34
Incorrect control instruction syntax.

-->      //  cosine-tapered window
 -->      t = linspace(0,1,L)(1:$:(1:$/2)';
                         !--error 4
Undefined variable: L

-->      w = (1 + cos(%pi*(2*t/r-1)))/2;
                            !--error 4
Undefined variable: t

-->      w(floor(r*(L-1)/2)+2:end) = 1;
                   !--error 4
Undefined variable: L

-->      w = [w; ones(modulo(L,2)); flipdim(w,1)];
             !--error 4
Undefined variable: w

-->  end
  !--error 34
Incorrect control instruction syntax.

-->endfunction
  !--error 16
Incorrect command!

Thanks for any help

Lester

//  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)

  //nargin=>argn(2)
  // if (nargin < 1 || nargin > 2)
  if (argn(2) < 1 || argn(2) > 2)
      print_usage;
  elseif (nargin == 2)
      //  check that 0 < r < 1
      if r > 1
        r = 1;
      elseif r < 0
        r = 0;
      end
  end

  //  generate window
  select r
    case 0,
      //  full box
      w = ones (L, 1);
    case 1,
      //  Hanning window
     // w = hanning (L);
     window('hanning',L)
     else
      //  cosine-tapered window
      t = linspace(0,1,L)(1:$:(1:$/2)';
      w = (1 + cos(%pi*(2*t/r-1)))/2;
      w(floor(r*(L-1)/2)+2:end) = 1;
      w = [w; ones(modulo(L,2)); flipdim(w,1)];
  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);



On 19 September 2012 23:31, Samuel Gougeon <sgougeon at free.fr> wrote:

> **
> Hello,
>
> Le 20/09/2012 00:05, Lester Anderson a écrit :
>
>
> function w=tukeywin(L, r= 1/2)
>
>   if (nargin < 1 || nargin > 2)    ------ Not sure how to replace this bit (variable not defined)
>
>
>  nargin => argn(2)
>
>     .../...
>
>   //  generate window
>
>   switch r   --------- think this should be select ?
>
>
>  Right
>
> .../...
>     case 1,
>
>       //  Hanning window
>       w = hanning (L);
>
>  window('hn',L)
>
>     otherwise   ------------- else
>
>
>  Yes
>
>        //  cosine-tapered window
>       t = linspace(0,1,L)(1:end/2)';
>
>  replace end with $  : (1:$/2)';
>
>
>        w = (1 + cos(pi*(2*t/r-1)))/2;
>
>  pi => %pi
>
>
>        w(floor(r*(L-1)/2)+2:end) = 1;
>       w = [w; ones(mod(L,2)); flipud(w)];
>
>  mod => modulo
> flipud(w) => flipdim(w,1)
>
>    endswitch  ------------------------------------ end ?
>
>
>  Yes
>
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20120920/fa9c632c/attachment.htm>


More information about the users mailing list