0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 47
1

Дискретное преобразование Фурье (ДПФ)

09.05.2013, 21:33. Показов 43791. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне надо организовать ДПФ, прямое и обратное. По формулам у меня не получилось. Хочу воспользоваться библиотекой. Получится ли у меня сделать это преобразование, если я имею массив(двумерный) зависимости амплитуды от времени сигнала, используя эту библиотеку? И хотел бы узнать вот так подключается библиотека для ДПФ или нет? #pragma resource "*.dfm". За помощь буду благодарен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2013, 21:33
Ответы с готовыми решениями:

Ряды Фурье дискретное преобразование
Ребята всем привет!!! столкнулся на работе с проблемкой. Решить можно путем дискретного...

Дискретное преобразование Фурье. Расхождение с matlab
Добрый день. У меня проблема следующая. Пытаюсь реализовать ДПФ на С++, формулы взял из википедии....

Подключение библиотеки fftw. Преобразование Фурье.
Приветствую. Есть необходимость использовать быстрое преобразование Фурье. Скачал библиотеку ,...

Двумерное преобразование фурье
Где б разжиться функцией двумерного преобразования фурье? Причем, желательно, не в составе...

16
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.05.2013, 21:37 2
Ты про какую библиотеку ?
Цитата Сообщение от Мишутка1 Посмотреть сообщение
И хотел бы узнать вот так подключается библиотека для ДПФ или нет? #pragma resource "*.dfm".
Думаю тебе еще рано за такое браться...
0
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 47
10.05.2013, 11:41  [ТС] 3
Цитата Сообщение от Avazart Посмотреть сообщение
Ты про какую библиотеку ?

Думаю тебе еще рано за такое браться...
я про библиотеку, которая должна реализовать ДПФ, думаю это логично
0
LK
Заблокирован
10.05.2013, 14:00 4
Извольте: Fast Fourier Transforms
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.05.2013, 15:09 5
Цитата Сообщение от Мишутка1 Посмотреть сообщение
я про библиотеку, которая должна реализовать ДПФ, думаю это логично
Логично сначала найти такую библиотеку или реализовать её самому...
0
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 47
10.05.2013, 16:34  [ТС] 6
Цитата Сообщение от Avazart Посмотреть сообщение
Логично сначала найти такую библиотеку или реализовать её самому...
её нет чтоли?
0
LK
Заблокирован
10.05.2013, 16:42 7
Мишутка1, или переходим к конкретным вопросам, или эту беспредметную болтовню закрою.
0
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 47
10.05.2013, 16:52  [ТС] 8
Цитата Сообщение от LK Посмотреть сообщение
Мишутка1, или переходим к конкретным вопросам, или эту беспредметную болтовню закрою.
ну на вопрос так никто и не ответил! Или никто не знает как подключить библиотеку, или как выполнить ДПФ по формулам
0
LK
Заблокирован
10.05.2013, 16:58 9
Мишутка1, Правила, п.4.7.
Как можно более полно описывайте суть проблемы или вопроса, что было сделано для ее решения и какие результаты получены.
Сами то вы что сделали для решения интересующего вас вопроса?
0
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 47
10.05.2013, 17:11  [ТС] 10
Цитата Сообщение от LK Посмотреть сообщение
Мишутка1, Правила, п.4.7.Сами то вы что сделали для решения интересующего вас вопроса?
вот код:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/////////ДПФ
double Re = 0, Im = 0, summaRe = 0, summaIm = 0, Ak[512] = {0}, Ak_1[512] = {0}, Arg = 0;
for (int i = 0; i < 512; i++)
{
summaRe = 0; summaIm = 0;
for (int j = 0; j < 512; j++)
{
Arg = 2.0*M_PI*j*i/512.0;
Re = cos(Arg)*(massiv[j]);
Im = sin(Arg)*(massiv[j]);
summaRe = summaRe + Re;
summaIm = summaIm + Im;
}
Ak[i] = sqrt(summaRe*summaRe + summaIm*summaIm);
}
проверить его правильность я не могу, так как не могу построить Обратное ДПФ, но визуально препод говорит правильно. Массив massiv[j] это значение амплитуды сигнала в время j. Всего у меня сигнал разбивается на 512 отсчётов. Это так задано.
0
102 / 87 / 17
Регистрация: 04.05.2011
Сообщений: 1,330
28.12.2013, 16:05 11
Решил темы о ДПФ не множить, но и довольствоваться старыми не могу.
Не получается, блин, и всё тут.
ДПФ, такой же как и выше, только для отдельной гармоники:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
struct FFT {
    long double Re;
    long double Im;
    long double A;
    long double B;
};
//---------------------------------------------------------------------------
FFT Funct(long double *Mas, int N, int J)    {
    int i;
    double long Re, Im;
    FFT myStruct;
 
    Re=Im=0;
    for(i=0;i<N;i++)    {
        Re=Re+Mas[i]*cos(2.0*PI*J*i/N);
        Im=Im+Mas[i]*sin(2.0*PI*J*i/N);
    }
    myStruct.Re=Re;
    myStruct.Im=Im;
    myStruct.A=sqrtl(Re*Re+Im*Im);
    myStruct.B=atan(Im/Re);
    return myStruct;
}
А теперь вожусь с обратным (сигнал не восстанавливается)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void Funct2(long double *Mas, long double *Mas2, int N)    {
    int i, j;
    double long Re, Im;
 
    for (i=0; i<N; i++) {
        Re=Im=0;
        for(j=0;j<N;j++)    {
            Re=Re+Mas2[j]*cos(2.0*PI*i*j/N);
            Im=Im+Mas2[j]*sin(2.0*PI*i*j/N);
        }
        Mas[i]=sqrtl(Re*Re/N+Im*Im/N);
    }
}
Миниатюры
Дискретное преобразование Фурье (ДПФ)  
0
192 / 128 / 52
Регистрация: 19.01.2010
Сообщений: 518
28.12.2013, 23:41 12
Цитата Сообщение от Мишутка1 Посмотреть сообщение
Или никто не знает как подключить библиотеку, или как выполнить ДПФ по формулам
Подключение библиотеки fftw. Преобразование Фурье.
1
10229 / 6607 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
29.12.2013, 00:19 13
ДПФ на С#
Программы на C# из книги Смита по ЦОС. FFTW
Литература по ЦОС и алгоритмам
1
102 / 87 / 17
Регистрация: 04.05.2011
Сообщений: 1,330
29.12.2013, 18:27 14
Всем большое спасибо за помощь, особенно за "ДПФ на С#". С библиотекой не связывался, т.к. уровень работы простой. Не подскажете как по простому организовывать фильтры на сигнал?
Думаю так: дискретное преобразование Фурье -> все фазы и амплитуды, частоты которых больше выбранного значения, обнуляю -> делаю обратное преобразование - Это "типа" фильтр высоких частот
0
10229 / 6607 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
29.12.2013, 18:53 15
Да, можно и так, только гармоники частоты которых больше или меньше. Пример генерации шума с регулируемой полосой:


Демонстрация питч-шифтинга октавой вниз и вверх для сигнала


Есть исходный сигнал, делаем БПФ, удваиваем все гармоники, делаем обратный БПФ, с восстановленным и сдвинутым по частоте сигналом делаем снова БПФ - наблюдаем визуализацию сдвинутого по частоте спектра сигнала.


По сабжу

Что есть окна и для чего они
Цифровая фильтрация на ПЛИС
и сглаживание
1
102 / 87 / 17
Регистрация: 04.05.2011
Сообщений: 1,330
29.12.2013, 21:59 16
Боюсь, у меня ещё два вопроса (уже чисто практических).
1. Как в Buildere отобразить эти самые амплитуды и частоты (использовать логарифмический масштаб? - получается изображение внизу)
2. Почему не получается обратное преобразование? Если делаю через сохранённое Re, Im -всё Ок! Но требуется делать через амплитуду и частоту
Например функция:
C++
1
x=10.0*cos(((2.0*PI*i)/N)-PI/2.0);
А восстановить требуется через функцию:
C++
1
2
for(j=0; j<N/2;j++)
                x=x+MasA[j]*cos((2.0*PI*i*j/N)-MasF[j]);
- это для каждого х.

В теории не силён...
Миниатюры
Дискретное преобразование Фурье (ДПФ)  
0
102 / 87 / 17
Регистрация: 04.05.2011
Сообщений: 1,330
30.12.2013, 13:51 17
MasA[j],MasF[j] - это разумеется амплитуды и фазы

Добавлено через 15 часов 41 минуту
Всё ещё требуется помощь...
0
30.12.2013, 13:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.12.2013, 13:51
Помогаю со студенческими работами здесь

Быстрое преобразование Фурье
Доброго времени суток. Пытаюсь реализовать на С++ создание цифрового фильтра методом свертки, при...

Дискретное преобразование Фурье
Выручайте.:) Пожалуйста,опишите этапы подключения библиотеки ipp и примеры реализации дискретного...

Дискретное преобразование фурье (ДПФ)
Необходимо выполнить дискретное преобразование Фурье в Exel. Сразу оговорюсь... встроенный пакет...

Дискретное преобразование фурье
Доброго времени суток ув. форумчане! прошу помочь разобраться с задачей, дословно гласит:...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru