|
|
|
reider |
|
|||
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 18.11.2013 Репутация: нет Всего: нет |
Доброго времени суток.
Пришёл сюда за советом после того как не смог найти нормального примера. Есть комплексный сигнал. Хочу отфильтровать полосу с последующей дискретизацией. Фильтр есть желание делать через БПФ. Но не могу найти как осуществить сшивку по краям(метод перекрытия с накоплением). Подскажите алгоритм или может знаете где исходники есть? Буду очень благодарен. |
|||
|
||||
Romikgy |
|
|||
Любитель-программер Профиль Группа: Участник Клуба Сообщений: 7325 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 1 Всего: 146 |
а фильтр изменяемый? или настроенный единожды?
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
reider |
|
|||
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 18.11.2013 Репутация: нет Всего: нет |
единыжды. Пока так. Есть tesla вот надо бы её этим нагрузить
|
|||
|
||||
Romikgy |
|
|||
Любитель-программер Профиль Группа: Участник Клуба Сообщений: 7325 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 1 Всего: 146 |
тогда с помощью БПФ получить переходную характеристику фильтра и использовать ее , не надо будет парится со сшивками...
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
Pavia |
|
|||
Опытный Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Что-бы не сшивать вам надо строить не идеальный фильтр, а реальный.
Коэффициенты берутся по формуле фильтра Баттерворта или Чебешева. Они гарантированно устойчивые. Это сообщение отредактировал(а) Pavia - 18.2.2016, 07:35 |
|||
|
||||
reider |
|
|||
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 18.11.2013 Репутация: нет Всего: нет |
А сшивка как происходит? вот собственно в этом у меня и проблема. Знаю есть два вида сшивки. Хочу реализовать хотя бы одну. Например с накоплением. Прошу Вас, скажите как это делать. На пальцах можете объяснить ... а то я так же не нашел алгоритма этого действия
|
|||
|
||||
Pavia |
|
|||
Опытный Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
reider,
Сшивка это не обоснованный метод. А способ подгонки результата под ответ. Не важно как работает важно как выгледит. С накоплением берем кусок вставляем в исходный сигнал берём следующий вставляем. А второй способ когда в месте перекрытия берём среднее - сумма двух сигналов делённая на 2. |
|||
|
||||
reider |
|
|||
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 18.11.2013 Репутация: нет Всего: нет |
Ок. Если это подгонка, то я тогда не понимаю.
Самый просто пример: беру кусок отсчётов, считаю БПФ, потом полученные данные загоняю в ОБПФ. Спектр сигнала аналогичен начальному, но при попытке демодуляции я вижу постоянный срыв фазы. Что на исходном сигнале не наблюдается. Вот такую сшивку как сделать? Просто - БПФ -> ОБПФ |
|||
|
||||
Romikgy |
|
|||
Любитель-программер Профиль Группа: Участник Клуба Сообщений: 7325 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 1 Всего: 146 |
вопросы из раздела ... у меня лампочка в холодильники не выключается... как не открою всегда горит , что делать? ... возможно количество отсчетов у БПФ мало , возможно где то ошибки ... возможно еще много чего ...
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
reider |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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 в результирующий файл Вот такой вот алгоритм..... Что с ним не так?? |
|||
|
||||
Santik |
|
||||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 13.3.2012 Где: Мирный (Якутия) Репутация: нет Всего: нет |
Ниччо не понял.... И вообще, что такое FFT FIR ??? А вот FFT IIR существует?
Вообще- то на "порцию" надо бы сглаживающее окно наложить.... А всё-таки проще IIR классический. И коэффициенты фильтра можно в реальном времени вычислять, если надо... Здесь можно посмотреть |
||||
|
|||||
Santik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 13.3.2012 Где: Мирный (Якутия) Репутация: нет Всего: нет |
100% гарантию даёт только страховой полис (с) А в реальной жизни всегда есть зависимость от порядка фильтра и частоты/частот среза |
|||
|
||||
Pavia |
|
||||
Опытный Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Знаю. Знаю. Просто неправильно фразу написал. Устойчивость фильтра можно проверить только в S пространстве. Для Бартервота и Чебышева эти преобразования легкие и однозначные. Более того некоторые авторы прям и приводят их сразу в этом пространстве. Фильтры Бартервота и Чебышева сконструированы так что в S- пространстве они устойчивые. Что касается реальной жизни. То для реализации нужно сделать фильтр БИХ или КИХ. Для них есть легкий переход в Z пространство. Если конструирование начать с них то вы наткнётесь на неустойчивость. Поэтому надо идти от S. При переходи от S к Z легок доказывается что нечётные степень КИХ неустойчивые. Поэтому в примерах расчёта коэффициентов для фильтра Бартервта это уже учтено. Что касается частоты среза. Да. Есть такая вещь. Но стоит понимать что многие думают что устойчивость можно доказать в t или Z. Но это не так в книгах это доказывается. Даже в L это сделать порой затруднительно. Так что масштабирование надо делать в S пространстве тогда вы правильно сделаете. Что касается численных ошибок вызванных конечностью чисел в компьютере и бесконечностью(вернее трансцендентностью) в математике. То тут совет прост используйте КИХ фильтр. Для него частота среза не влияет на устойчивость. Как это сделать для БИХ честно не знаю. Вернее понятно ошибка известна и далее надо делать выкладки с доказательством величины ошибки. Но такие расчёты я не видел. А в ручную лень делать. Можно попробовать использовать целочисленное моделирование. А после переложить результат на плавающие числа.
А почему нет? FFT это всего лишь ускорение преобразования. В Z плоскости ПФ преобразование есть перевод из декартовой системы координат в полярные. БИХ фильтр в Z плоскости есть отношение двух функций. А мы можем перевести из декартовой системы координат в полярную любую функцию. Соответственно на FFT это не влияет. Следовательно БИХ фильтр может быть реализован через FFT. |
||||
|
|||||
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |