Дискретное преобразование Фурье C ++ - что делать дальше?

0

Я использую библиотеку fftw для выполнения ДПФ на аудиосигнале, который я получил от видеозаписи.

Это мой первый раз, используя этот вид математики и анализ сигналов, но я считаю, что после вычисления вы получите правильные значения из данных.

Тем не менее, теперь я не уверен, что делать с массивом сложных чисел, и как я мог бы сделать это в графике.

Пожалуйста, может кто-то посоветовать, что делать дальше, вот пример данных до и после...

(in, out(real;im))
(-12190,          (real:-3103;   im:0))
(-16316,          (real:-3108.465666587691;     im:49.512823501357843))
(-10005,          (real:-3096.7767811251124;    im:99.645004992013128))
(first 3 from a sample of 512)

Кроме того, вот код, который я использую для получения этих результатов...

    int n = 512;

    double in[512];
    fftw_complex out[512];
    fftw_plan p;

    ifstream rFile ("audioswap.csv");
    string line;

    if (rFile.is_open())
    {
        for (int i = 0; i < n; i++)
        {
            if ( getline (rFile, line))
            {
                in[i] = ::atof(line.c_str());
            }
            else
            {
                break;
            }
        }
    }

    p = fftw_plan_dft_r2c_1d(n, in, out, FFTW_ESTIMATE);

    fftw_execute(p);

    fftw_destroy_plan(p);

Если я буду делать что-то не так, чтобы получить результаты, пожалуйста, кто-нибудь сможет посоветовать.

Заранее благодарю любую помощь !!! :)

  • 1
    Было бы полезно, если бы вы объяснили цель этого, то есть чего вы пытаетесь достичь?
  • 0
    Извините за поздний ответ, были из страны на работу. Я использую это как часть программного обеспечения для анализа, чтобы определить степень искажения видео после шифрования / сжатия и восстановления процесса. Будет использовать БПФ для построения диаграммы для аудио анализа
Теги:
audio
fft
fftw

1 ответ

1
Лучший ответ

Для почти всех целей следующая вещь, которую вы делаете, - это величина каждого сложного значения. Фазовая информация в домене Фурье является результатом (малых) сдвигов по времени во временной области, и, как правило, это не имеет значения. Если вы измените информацию о фазе и преобразуете ее обратно во временную область, она по-прежнему звучит одинаково.

Величина может быть изображена непосредственно, что значимо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню