Q:

Преобразование массива double к массиву complex и выполнение БПФ

Здравствуйте. Поясните, пожалуйста, у меня имеется массив double полученный с wav-файла, как теперь его преобразовать в массив complex?
Я планирую использовать этот код для быстрого преобразования Фурье:
private static Complex w(int k, int N)
{
    if (k % N == 0) return 1;
    double arg = -2 * Math.PI * k / N;
    return new Complex(Math.Cos(arg), Math.Sin(arg));
}

public static Complex[] fft(Complex[] x)
{
    Complex[] X;
    int N = x.Length;
    if (N == 2)
    {
        X = new Complex[2];
        X[0] = x[0] + x[1];
        X[1] = x[0] - x[1];
    }
    else
    {
        Complex[] x_even = new Complex[N / 2];
        Complex[] x_odd = new Complex[N / 2];
        for (int i = 0; i < N / 2; i++)
        {
            x_even[i] = x[2 * i];
            x_odd[i] = x[2 * i + 1];
        }
        Complex[] X_even = fft(x_even);
        Complex[] X_odd = fft(x_odd);
        X = new Complex[N];
        for (int i = 0; i < N / 2; i++)
        {
            X[i] = X_even[i] + w(i, N) * X_odd[i];
            X[i + N / 2] = X_even[i] - w(i, N) * X_odd[i];
        }
    }
    return X;
}

Который выложен на википедии, как я понял, если я планирую предварительно преобразовать массив double в массив complex, то метод w не нужен?

A:

Не скажу конкретно про C#, но скажу про БПФ.  

если я планирую предварительно преобразовать массив double в массив complex

БПФ работает на комплексном буфере. Придется преобразовать. Выбора нет.

то метод w не нужен?

Метод w это комплексная экспонента, которая используется в БПФ в любом случае. Здесь тоже нет выбора.  
Преобразование действительного в комплексное это просто установка реальной части в нужное значение, а мнимой в 0.

