[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