Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FFT FIR, фильтр через БПФ 
:(
    Опции темы
reider
Дата 17.2.2016, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 18.11.2013

Репутация: нет
Всего: нет



Доброго времени суток.
Пришёл сюда за советом после того как не смог найти нормального примера.
Есть комплексный сигнал.
Хочу отфильтровать полосу с последующей дискретизацией.
Фильтр есть желание делать через БПФ.
Но не могу найти как осуществить сшивку по краям(метод перекрытия с накоплением).
Подскажите алгоритм или может знаете где исходники есть?
Буду очень благодарен.
PM MAIL   Вверх
Romikgy
Дата 17.2.2016, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



а фильтр изменяемый? или настроенный единожды?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
reider
Дата 17.2.2016, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 18.11.2013

Репутация: нет
Всего: нет



единыжды. Пока так. Есть tesla вот надо бы её этим нагрузить

PM MAIL   Вверх
Romikgy
Дата 17.2.2016, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



тогда с помощью БПФ получить переходную характеристику фильтра и использовать ее , не надо будет парится со сшивками...


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Pavia
Дата 18.2.2016, 06:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Что-бы не сшивать вам надо строить не идеальный фильтр, а реальный. 
Коэффициенты берутся по формуле фильтра Баттерворта или Чебешева. Они гарантированно устойчивые.

Это сообщение отредактировал(а) Pavia - 18.2.2016, 07:35
PM MAIL   Вверх
reider
Дата 18.2.2016, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 18.11.2013

Репутация: нет
Всего: нет



А сшивка  как происходит? вот собственно в этом у меня и проблема. Знаю есть два вида сшивки. Хочу реализовать хотя бы  одну. Например с накоплением. Прошу Вас, скажите как это делать. На пальцах можете объяснить ... а то я так же не нашел алгоритма этого действия
PM MAIL   Вверх
Pavia
Дата 18.2.2016, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



reider
Сшивка это не обоснованный метод. А способ подгонки результата под ответ. Не важно как работает важно как выгледит.

С накоплением берем кусок вставляем в исходный сигнал берём следующий вставляем.

А второй способ когда в месте перекрытия берём среднее - сумма двух сигналов делённая на 2.
PM MAIL   Вверх
reider
Дата 19.2.2016, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 18.11.2013

Репутация: нет
Всего: нет



Ок. Если это подгонка, то я тогда не понимаю.
Самый просто пример:
беру кусок отсчётов, считаю БПФ, потом полученные данные загоняю в ОБПФ.
Спектр сигнала аналогичен начальному, но при попытке демодуляции я вижу постоянный срыв фазы.
Что на исходном сигнале не наблюдается.
Вот такую сшивку как сделать?
Просто - БПФ -> ОБПФ
PM MAIL   Вверх
Romikgy
Дата 19.2.2016, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



вопросы из раздела ... у меня лампочка в холодильники не выключается... как не открою всегда горит , что делать? ...  возможно количество отсчетов у БПФ мало , возможно где то ошибки ... возможно еще много чего ...


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
reider
Дата 24.2.2016, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 18.11.2013

Репутация: нет
Всего: нет



Делаю так.
Размер порции 65536 отсчётов(N).
BuffIn это входной массив размером 2N 
BuffTmp Временный массив размером N

цикл()
{
 протераю BuffIn нулями
 считываю из файла N отсчётов
 считаю БПФ размерностью 2N (результат в BuffIn)
 считаю ОБПФ размерностью 2N  (результат в BuffIn)
 если это превая итерация
                                             копируем последние N отсчётов из BuffIn в BuffTmp
                                             записываю N первых отсчётов из  BuffIn в результирующий файл
если это не первая итерация
                                             от 0 до N 
                                             BuffIn[k] = BuffIn[k] + BuffTmp[k]
                                             копируем последние N отсчётов из BuffIn в BuffTmp
                                             записываю N первых отсчётов из  BuffIn в результирующий файл

Вот такой вот алгоритм.....
Что с ним не так??




PM MAIL   Вверх
Santik
Дата 1.3.2016, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 13.3.2012
Где: Мирный (Якутия)

Репутация: нет
Всего: нет



Цитата

протераю BuffIn нулями

Ниччо не понял....
И вообще, что такое FFT FIR ???
А вот FFT IIR существует?

Цитата

Размер порции 65536 отсчётов(N).

Вообще- то на "порцию" надо бы сглаживающее окно наложить....

А всё-таки проще IIR классический.
И коэффициенты фильтра можно в реальном времени вычислять, если надо...
Здесь можно посмотреть
PM MAIL   Вверх
Santik
Дата 1.3.2016, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 13.3.2012
Где: Мирный (Якутия)

Репутация: нет
Всего: нет



Цитата(Pavia @ 18.2.2016,  06:31)
Коэффициенты берутся по формуле фильтра Баттерворта или Чебешева. Они гарантированно устойчивые.

 smile 
100% гарантию даёт только страховой полис (с)
А в реальной жизни всегда есть зависимость от порядка фильтра и частоты/частот среза  smile 
PM MAIL   Вверх
Pavia
Дата 5.3.2016, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Цитата(Santik @  1.3.2016,  18:14 Найти цитируемый пост)
100% гарантию даёт только страховой полис (с)А в реальной жизни всегда есть зависимость от порядка фильтра и частоты/частот среза   

Знаю. Знаю. Просто неправильно фразу написал. 
Устойчивость фильтра можно проверить только в S пространстве. 
Для Бартервота и Чебышева эти преобразования легкие и однозначные. Более того некоторые авторы прям и приводят их сразу в этом пространстве.

Фильтры Бартервота и Чебышева  сконструированы так что в S- пространстве они устойчивые.

Что касается реальной жизни. То для реализации нужно сделать фильтр БИХ или КИХ. Для них есть легкий переход в Z пространство.
Если конструирование начать с них то вы наткнётесь на неустойчивость. Поэтому надо идти от S.

При переходи от S к Z легок доказывается что нечётные степень КИХ неустойчивые.

Поэтому в примерах расчёта коэффициентов для фильтра Бартервта это уже учтено.

Что касается частоты среза. Да. Есть такая вещь. 
Но стоит понимать что многие думают что устойчивость можно доказать в t или Z.  Но это не так в книгах это доказывается. Даже в L это сделать порой затруднительно. Так что масштабирование надо делать в S пространстве тогда вы правильно сделаете.

Что касается численных ошибок вызванных конечностью чисел в компьютере и бесконечностью(вернее трансцендентностью) в математике.

То тут совет прост используйте КИХ фильтр.  Для него частота среза не влияет на устойчивость. Как это сделать для БИХ честно не знаю. Вернее понятно ошибка известна и далее надо делать выкладки с доказательством величины ошибки. Но такие расчёты я не видел. А в ручную лень делать. Можно попробовать использовать целочисленное моделирование. А после переложить результат на плавающие числа. 

Цитата

И вообще, что такое FFT FIR ???
А вот FFT IIR существует?

А почему нет? FFT это всего лишь ускорение преобразования. В Z плоскости ПФ преобразование есть перевод из декартовой системы координат в полярные. 
БИХ фильтр в Z плоскости есть отношение двух функций.
А мы можем перевести из декартовой системы координат в полярную любую функцию.
 
Соответственно на FFT это не влияет.  Следовательно БИХ фильтр может быть реализован через FFT.



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1461 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.