Форум программистов, компьютерный форум CyberForum.ru

БПФ на с++ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.89
Ailuy
Сообщений: n/a
19.12.2013, 12:25     БПФ на с++ #1
Заранее прошу прощения, если тема уже существует, а я создаю снова.
Дело в том, что понадобилась программа БПФ на с++, моих возможностей на этом языке не хватает для реализации, к сожалению, поэтому прошу помочь.
Если кто напишет с подробными комментариями, чтобы можно было посидеть и поразбираться, буду очень благодарна.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2013, 12:25     БПФ на с++
Посмотрите здесь:

БПФ Visual C++
C++ БПФ
БПФ синусоиды
C++ БПФ
БПФ и разрядность
Assembler БПФ
AVR БПФ на Atmega8A
БПФ для STM32F103

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
19.12.2013, 12:36     БПФ на с++ #2
Быстрое преобразование Фурье
HighPredator
 Аватар для HighPredator
5347 / 1730 / 320
Регистрация: 10.12.2010
Сообщений: 5,112
Записей в блоге: 3
19.12.2013, 14:53     БПФ на с++ #3
Вот как вариант реализация для сигналов в комплексной форме:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//-------------------------------------------------------------------------------
//функция БПФ - реализация (по Т.Кормену)
TComplexDigit* FFT(TComplexDigit *Arr,int N)
{
    if(N<=1) return Arr;
    TComplexDigit OmegaN;
    TComplexDigit Omega;
    OmegaN.Re=cos(2.0*(CONST_PI/N));
    OmegaN.Im=sin(2.0*(CONST_PI/N));    
    Omega.Re=1.0;
    Omega.Im=0.0;
    TComplexDigit *A0=new TComplexDigit[N/2];
    TComplexDigit *A1=new TComplexDigit[N/2];
    int k=0;
    int m=0;    
    for(int i=0;i<N;i++)
    {
        if(i%2==0)
        {
            A0[k]=Arr[i];
            k++;
        }
        else
        {
            A1[m]=Arr[i];
            m++;
        }
    }
    TComplexDigit *Y0=FFT(A0,N/2);
    TComplexDigit *Y1=FFT(A1,N/2);
    TComplexDigit *Y=new TComplexDigit[N];
    for(k=0;k<N/2;k++)
    {
        TComplexDigit temp;
        temp=Y1[k]*Omega;
        Y[k]=Y0[k]+temp;
        Y[k+(N/2)]=Y0[k]-temp;
        Omega=Omega*OmegaN;
    }
    delete [] A0;
    delete [] A1;
    return Y;
}
За подробностями -- Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн, "Алгоритмы. Построение и анализ", Второе издание. 2012 г., с. 926-942.
Yandex
Объявления
19.12.2013, 14:53     БПФ на с++
Ответ Создать тему
Опции темы

Текущее время: 02:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru