View Raw SPL
/* formula for windowing funstions */
_winfunform(ser, winfn, winc, dc, sym)
{
local evalstr, dataser, addsym;
/* undefine old macros if they exist - runtime */
undefmacro("kaiser");
undefmacro("hamming");
undefmacro("hanning");
/* remove mean */
if (dc)
{
dataser = sprintf("demean(%s)", ser);
}
else
{
dataser = ser;
}
if (winfn == _nonestr || winfn == "None")
{
evalstr = dataser;
}
else if (winc == 0)
{
evalstr = sprintf("%s(%s", winfn, dataser);
}
else
{
evalstr = sprintf("%s(%s, %d", winfn, dataser, winc);
}
/* symmetry flag */
if (evalstr != dataser)
{
if (winfn == "Flattop")
{
addsym = sym != 1;
}
else
{
addsym = sym != 0;
}
if (addsym)
{
evalstr = sprintf('%s, "%s")' , evalstr, _winfunform_sym(sym));
}
else
{
evalstr = sprintf('%s)', evalstr);
}
}
return(evalstr);
}
/* symmetry flag */
_winfunform_sym(sym)
{
local s;
switch (sym)
{
case 0:
default:
s = "symmetric";
break;
case 1:
s= "periodic";
break;
case 2:
s = "direct";
break;
}
return(s);
}