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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 38, средняя оценка - 4.95
sinsin
0 / 0 / 0
Регистрация: 21.01.2010
Сообщений: 3
#1

Быстрое преобразование Фурье - C++

24.02.2011, 14:40. Просмотров 4613. Ответов 2
Метки нет (Все метки)

Доброго времени суток.
Пытаюсь реализовать на С++ создание цифрового фильтра методом свертки, при этом использую БПФ, реализованную на http://algolist.manual.ru/maths/fft.php, но получаю странный результат:
после прогона заданной частотной характеристики фильтра через обратное БПФ(пока использую FFT_T) в выходном массиве появляеются ненулевые комплексные составляющие.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  int N = FDiscr*2;
    Complex *FHar = new Complex[N];
    double *tmp_arr = new double[N];
    Complex tmp; 
    // частотная характеристика
    for (int i = 0;i<FDiscr;i++)
    {
        FHar[i].i = 0;
        if ((i<=f2)&&(i>=f1))
            FHar[i].r = 1;
        else
            FHar[i].r = 0;
    }
    FFTReOrder(FHar,FDiscr);
    // обратное бпф
    FFT_T(FHar,FDiscr,-1);
Как это можно побороть?
Чтобы насчет правильности действий не возникалли вопросы, синтез фильтра в mathcad прикреплен в Filter_exper.rar.
0
Вложения
Тип файла: rar Filter_exper.rar (64.8 Кб, 130 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2011, 14:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Быстрое преобразование Фурье (C++):

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

Быстрое программирование - C++
Расскажите что это такое. Ничего толкового ни на русском ни на английском не нашел. Только пару книг, но их надо покупать.

быстрое рисование с помощью GDI+ - C++
Доброго времени суток! Хочу вывести прямоугольник в центр экрана используя GDI+, если рисовать сразу, то картинка будет тормозить. Поэтому...

Быстрое чтение большого файла. Зависает процесс - C++
Всем доброго времени суток. Есть задача прочитать файл(1-20 мб), который состоит из слов разделённых пробелами для того, чтобы переписать...

Как из Wav файла получить комплексные значения для быстрого преобразования Фурье? - C++
Пишу программу для вывода спектра Wav файла Беру данные из Wav файла, прочел шапку, дошел до самих значений. Как понимаю это амплитудные...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
vital792
1990 / 1262 / 57
Регистрация: 05.06.2010
Сообщений: 2,213
27.02.2011, 23:11 #2
Цитата Сообщение от sinsin Посмотреть сообщение
после прогона заданной частотной характеристики фильтра через обратное БПФ(пока использую FFT_T) в выходном массиве появляеются ненулевые комплексные составляющие.
ниче не понял, какие еще ненулевые комплексные составляющие? После ifft вы должны были получить импульсную характеристику фильтра и не в комплексном виде(мнимую часть просто можно отбросить).
И естественно она не будет нулевой. Судя по коду вы пытались сделать полосовой фильтр с полосой пропускания от f1 до f2. Посмотрите в учебнике импульсную характеристику полосового фильтра и сравните со своей. Я думаю не будет сильно отличаться
0
sinsin
0 / 0 / 0
Регистрация: 21.01.2010
Сообщений: 3
28.02.2011, 07:10  [ТС] #3
Проблема решена, см. [ссылка удалена]


 Комментарий модератора 
Ссылки на другие форумы запрещены.
Перечитайте правила форума.
Скопируйте решение сюда
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2011, 07:10
Привет! Вот еще темы с ответами:

Дискретное преобразование Фурье (ДПФ) - C++ Builder
Мне надо организовать ДПФ, прямое и обратное. По формулам у меня не получилось. Хочу воспользоваться библиотекой. Получится ли у меня...

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

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

Найти коэффиценты разложения в ряд Фурье, используя быстрое преобразование Фурье (БПФ) - MathCAD
Прошу помочь мне в нелеггкой задачке нужно для заданной на периоде 2∏ функции f(x) найти коэффициенты разложения в ряд Фурье, используя...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru