Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > FFT FIR |
Автор: reider 17.2.2016, 14:17 |
Доброго времени суток. Пришёл сюда за советом после того как не смог найти нормального примера. Есть комплексный сигнал. Хочу отфильтровать полосу с последующей дискретизацией. Фильтр есть желание делать через БПФ. Но не могу найти как осуществить сшивку по краям(метод перекрытия с накоплением). Подскажите алгоритм или может знаете где исходники есть? Буду очень благодарен. |
Автор: Romikgy 17.2.2016, 15:14 |
а фильтр изменяемый? или настроенный единожды? |
Автор: reider 17.2.2016, 15:22 |
единыжды. Пока так. Есть tesla вот надо бы её этим нагрузить |
Автор: Romikgy 17.2.2016, 20:08 |
тогда с помощью БПФ получить переходную характеристику фильтра и использовать ее , не надо будет парится со сшивками... |
Автор: Pavia 18.2.2016, 06:31 |
Что-бы не сшивать вам надо строить не идеальный фильтр, а реальный. Коэффициенты берутся по формуле фильтра Баттерворта или Чебешева. Они гарантированно устойчивые. |
Автор: reider 18.2.2016, 08:10 |
А сшивка как происходит? вот собственно в этом у меня и проблема. Знаю есть два вида сшивки. Хочу реализовать хотя бы одну. Например с накоплением. Прошу Вас, скажите как это делать. На пальцах можете объяснить ... а то я так же не нашел алгоритма этого действия |
Автор: Pavia 18.2.2016, 18:52 |
reider, Сшивка это не обоснованный метод. А способ подгонки результата под ответ. Не важно как работает важно как выгледит. С накоплением берем кусок вставляем в исходный сигнал берём следующий вставляем. А второй способ когда в месте перекрытия берём среднее - сумма двух сигналов делённая на 2. |
Автор: reider 19.2.2016, 09:29 |
Ок. Если это подгонка, то я тогда не понимаю. Самый просто пример: беру кусок отсчётов, считаю БПФ, потом полученные данные загоняю в ОБПФ. Спектр сигнала аналогичен начальному, но при попытке демодуляции я вижу постоянный срыв фазы. Что на исходном сигнале не наблюдается. Вот такую сшивку как сделать? Просто - БПФ -> ОБПФ |
Автор: Romikgy 19.2.2016, 09:58 |
вопросы из раздела ... у меня лампочка в холодильники не выключается... как не открою всегда горит , что делать? ... возможно количество отсчетов у БПФ мало , возможно где то ошибки ... возможно еще много чего ... |
Автор: reider 24.2.2016, 11:31 |
Делаю так. Размер порции 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 в результирующий файл Вот такой вот алгоритм..... Что с ним не так?? |
Автор: Santik 1.3.2016, 17:58 | ||||
Ниччо не понял.... И вообще, что такое FFT FIR ??? А вот FFT IIR существует?
Вообще- то на "порцию" надо бы сглаживающее окно наложить.... А всё-таки проще IIR классический. И коэффициенты фильтра можно в реальном времени вычислять, если надо... http://we.easyelectronics.ru/Theory/cifrovye-rekursivnye-filtry-chast-1.html |
Автор: Santik 1.3.2016, 18:14 | ||
![]() 100% гарантию даёт только страховой полис (с) А в реальной жизни всегда есть зависимость от порядка фильтра и частоты/частот среза ![]() |