Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Децимация
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
ZhekSooN
Короче говоря вопрос в чем: можно ли уменьшать частоту дискретизации в целое кол-во раз просто усредняя N отсчетов и выдавая его за один?
Не будет ли сильного ализинга?
phantom
Лучше наверное выбрасывать а не усреднять.
ZhekSooN
Так вроде это сильно, очень сильно будет вонять ализингом...
Тем более что коэффицент децимации что-то около 20-40.
vadimuzzz
Цитата(ZhekSooN @ Jan 7 2011, 00:56) *
Не будет ли сильного ализинга?

http://www.dspguide.com/ch15/3.htm

дело не в алиазинге, а в АЧХ в полезной полосе
Lmx2315
Будет ли альязинг - зависит от соотношения исходной частоты сэмплирования и ширины спектра сигнала , чтобы альязинг исбежать ставят децимирующие фильтры. Они обрезают полосу так что-бы не было лишнего ничего а потом убирают "лишние" отсчёты .

Вроде так .

Чтобы по вашему способу сделать и не получить альязинга надо так : есть спектр шириной например 100 гц , если его просемплировать с частотой 500 гц а потом децимировать в два раза , то альязинга не будет .
А если тот же спектр просемплировать 300 гц , а потом децемировать в два раза - то будет приличный альязинг.

http://www.dsplib.ru/content/cicid/cicid.html



...как-то так .
ZhekSooN
Цитата
http://www.dspguide.com/ch15/3.htm

дело не в алиазинге, а в АЧХ в полезной полосе

Так при моем усреднении даже и этого плавающего среднего не будет, к примеру при k=5 первая выборка результата будет определяться так: b[1]=(a[1]+a[2]+a[3]+a[4]+a[5])/5 , вторая - b[2]=(a[6]+a[7]+a[8]+a[9]+a[10])/5 , то есть вторая никак не зависит от предыдущих отсчетов. А в плавающем среднем будет зависеть.
vadimuzzz
Цитата(ZhekSooN @ Jan 7 2011, 20:45) *
Так при моем усреднении даже и этого плавающего среднего не будет, к примеру при k=5 первая выборка результата будет определяться так: b[1]=(a[1]+a[2]+a[3]+a[4]+a[5])/5 , вторая - b[2]=(a[6]+a[7]+a[8]+a[9]+a[10])/5 , то есть вторая никак не зависит от предыдущих отсчетов. А в плавающем среднем будет зависеть.

это и есть скользящее среднее с децимацией (отбрасыванием) отсчетов
Alexey Lukin
Цитата(ZhekSooN @ Jan 6 2011, 22:56) *
Короче говоря вопрос в чем: можно ли уменьшать частоту дискретизации в целое кол-во раз просто усредняя N отсчетов и выдавая его за один?
Не будет ли сильного ализинга?

Усреднять лучше, чем просто отбрасывать отсчёты. Сильный при этом алиасинг или не сильный — зависит от задачи. Если это обработка изображений, то усреднение почти идеально. Если обработка звука — обычно используются более крутые фильтры. Вот спектр прямоугольного окна: спектр. Судите сами...
ZhekSooN
Цитата
это и есть скользящее среднее с децимацией (отбрасыванием) отсчетов

Да, спасибо, не заметил - сразу наложил скользящее среднее на такое усреднение.
Цитата
Если обработка звука — обычно используются более крутые фильтры. Вот спектр прямоугольного окна: спектр. Судите сами...

Да, будет именно "обработка" звука на МК - чтобы не переключать АЦП на более низкую частоту отсчетов (надо получать семплы с большой и с маленькой частотой дискретизации) и не городить аналоговые фильтры.
Требования сильные не нужны - чтобы у ресемплированого сигнала был реалистичный спектр.
Может есть другие хорошие способы? (восьмибитная арифметика и минимум промежуточных данных приветствуются)
Alexey Lukin
Стандартный способ для звука — фильтр типа windowed sinc: w(t) * sin(t) / t.
ZhekSooN
Цитата
Стандартный способ для звука — фильтр типа windowed sinc: w(t) * sin(t) / t.

Он-то хорош, но сильно много таблиц выходит, да и коэффиценты на порядки отличаются в различных местах - на МК AVR будет тяжко...
phantom
Цитата(ZhekSooN @ Jan 7 2011, 23:00) *
Он-то хорош, но сильно много таблиц выходит, да и коэффиценты на порядки отличаются в различных местах - на МК AVR будет тяжко...

Ну так используйте АРМ, все ж не ДСП, а можно нечто типа ПЛМ-ки, туда тоже не очень сложно перейти.
ViKo
Цитата(ZhekSooN @ Jan 7 2011, 20:37) *
Требования сильные не нужны - чтобы у ресемплированого сигнала был реалистичный спектр.
Может есть другие хорошие способы? (восьмибитная арифметика и минимум промежуточных данных приветствуются)

Перед децимацией вам нужен фильтр, который предотвратит наложение спектра из-за того, что частота дискретизации уменьшилась в 20..40 раз. Т.е., он должен отрезать все, что больше (Fs/20)/2 ... (Fs/40)/2. Фильтром КИХ с 5-ю отводами это сделать невозможно. Наверное, нужно иметь не менее 20...40 отводов. Другое дело, если спектр входного сигнала изначально уже обрезан.
Можно попытаться сделать децимацию в 2 этапа, например, сначала в 8 раз, потом в 5.
А форма окна - даже треугольная будет лучше прямоугольной. Боковые лепестки АЧХ уменьшатся, за счет расширения, к сожалению, основного лепестка. Можете выбрать коэффициенты, ближайшие к кратным степени 2, простейший пример: 0.25 0.5 0.25 (конечно, этот фильтр не для вашего случая).
А что, если сделать не в 2 этапа, а в 5, например?
ZhekSooN
Спасибо всем за развернутые ответы, но чувствую, что от цифровой децимации придется отказаться, так как для нормальных характеристик это будет сравнимо по сложности с самим БПФ, которое тоже будет выполнятся на МК.
Проще уж переключать входы/скорость АЦП и сделать аналоговый фильтр (все равно АРУ понадабится), чем тратить половину времени и памяти на обработку "быстрых" выборок.
alex_os
Цитата(ZhekSooN @ Jan 8 2011, 15:40) *
...но чувствую, что от цифровой децимации придется отказаться, так как для нормальных характеристик это будет сравнимо по сложности с самим БПФ, которое тоже будет выполнятся на МК.
...


А нормальные характеристики это сколько в цифрах ?
При СIC фильтры чего-нибудь слышали-читали? Удобная штука для больших коэффициентов децимации.
sup-sup
Действительно, при децимации раз в 40 здорово можно повысить эквивалентную разрядность (если у АЦП SFDR с запасом) так, что можно попробовать без АРУ обойтись (конечно, если речь идет о дополнительных 20-30 дБ). Или сэкономить на разрядах АЦП (младшие можно не использовать перед децимирующим фильтром).
Например, у однобитового DSD частота всего лишь в 64 раза выше, чем у многобитного потока.
ZhekSooN
sup-sup, но это же все тогда, когда отфильтровано все, что выше F/2 - а это совсем не мой случай.
sup-sup
Цитата(ZhekSooN @ Jan 8 2011, 19:14) *
sup-sup, но это же все тогда, когда отфильтровано все, что выше F/2 - а это совсем не мой случай.

Я только обратил внимание на то, что фильтрация увеличивает эквивалентную разрядность. И если это попробовать использовать, то возможно отказаться от АРУ. Это зависит от конкретной ситуации (в моей ситуации нужно было вводить дополнительный шум вне полосы для того, чтобы уровень помех в полосе упал). Усреднение прямоугольным окном (кроме частотной фильтрации) тоже повысит разрядность. Если ресурсов на лучшее окно нет, то все равно, это лучше, чем выбрасывать отсчеты (снизить частоту дискретизации).
Genn
Цитата(sup-sup @ Jan 8 2011, 20:51) *
Я только обратил внимание на то, что фильтрация увеличивает эквивалентную разрядность. И если это попробовать использовать, то возможно отказаться от АРУ. Это зависит от конкретной ситуации (в моей ситуации нужно было вводить дополнительный шум вне полосы для того, чтобы уровень помех в полосе упал). Усреднение прямоугольным окном (кроме частотной фильтрации) тоже повысит разрядность. Если ресурсов на лучшее окно нет, то все равно, это лучше, чем выбрасывать отсчеты (снизить частоту дискретизации).



Хочу обратить внимание на то, что указанный эффект увеличения эквивалентной разрядности при децимации оцифрованного на более высокой тактовой частоте связан с тем, что энергия шума на входе АЦП распределяется в более широкой полосе в соответствии с тактовой частотой АЦП. При децимации вместе с уменьшением тактовой частоты выполняется фильтрация (ФНЧ) и, таким образом, на выходе дециматора энергия шума уменьшается пропорционально снижению тактовой частоты (при вычислении спектра шумовая дорожка опускается). Однако уровень помех, присутствующих в полосе пропускания дециматора измениться не может. Использование фильтра скользящего среднего (CIC) действительно позволяет сэкономить вычислительные ресурсы, но требует последующей обработки КИХ-звеном.
В качестве примера реализации децимирующего фильтра рекомендую посмотреть архитектуру микросхем AD6620, AD6624.
sup-sup
Цитата(Genn @ Jan 8 2011, 21:46) *
..Однако уровень помех, присутствующих в полосе пропускания дециматора измениться не может..

Это я неточно про помехи сказал. Имел ввиду размывание спектра от соседствующей помехи внутри полосы, которое 'накрывает' полезный сигнал, если его уровень соизмерим с уровнем квантования или меньше него. При добавлении 'шума' подальше от сигнала (вне полосы) уровень шума в полосе сигнала опускается, в том числе (или только это) уходит размывание спектра от близко расположенной помехи. По рабоче-крестьянски объяснимо так, что в этом случае в фильтр (нужная частотная полоса оконного FFT) попадает более 'размельченная' смесь, в которой полезный сигнал остался нетронутый.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.