[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