View Raw SPL
/* FFT panel */
_fftwin(ser, fwin, len, form, winc, fftshft, dc, sym, dwin)
{
        local evalstr, dataser;

        /* undefine old macros if they exist - runtime */
        undefmacro("kaiser");
        undefmacro("hamming");
        undefmacro("hanning");

        /* Cartesian or Polar form */
        if (form)
        {
                func = "Fftp";
        }
        else
        {
                func = "Fft";
        }

        dataser = _winfunform(ser, fwin, winc, dc, sym);

        if (strcmp(len, "-1") == 0)
        {
                evalstr = sprintf("%s(%s)", func, dataser);
        }
        else if (strcmp(len, "-2") == 0)
        {
                evalstr = sprintf("%s(%s, bestpow2(%s))", func, dataser, ser);
        }
        else
        {
                evalstr = sprintf("%s(%s, %s)", func, dataser, len);
        }
        if (fftshft == 0)
        {
                evalstr = sprintf("setwf(%s, '%s')", _dwin, evalstr);
        }
        else
        {
                evalstr = sprintf("setwf(%s, 'Fftshift(%s)')", _dwin, evalstr);
        }

        eval(evalstr);
}