[an error occurred while processing this directive]
|
> А причем тут Фурье?
Ну в том смысле, что мне прореживание нужно, чтобы увеличивать разрешение на НЧ при использовании Фурье... И я вот подумал, что делать это надо с помощью КИХ...
> Ну тут однозначно не ответишь, до того как не указаны следующие вещи
> 1. Частота дискретизации до
Прореживание нуно, чтобы задавалось от 0 до 256 произвольно... Можно кратным 2...
> 2. полоса фильтра
КИХ планировался - это вроде как антиалиазинг совмесно с прореживанием. Потому сам по себе КИХ кроме как для задачи прореживания более не нужен...
> 3. прямоугольность (т.е. отношение полосы задерживания к полосе
> пропускания)
Ну это вытекает из пункта 2 -> выполняет функцию антиалиазинга.
Частота дискретизации 48 KHz...
> 4. подавление в полосе задерживания и неравномерность в полосе
> пропускания
0.1 dB - в полосе пропускания... 120 dB - подавление...
> 5. частота дискретизации после
Минимально 48000/256 = 187.5 Hz...
> 6. желательный порядок фильтра
<100...
> Так как ничего этого указано не было, то начну с общих положений.
> Как работает КИХ с N+1 коэффициентами (порядок N)?
Вот! Хотелось бы именно понять как это работает, а уж рассчитать все и построить - эт я все сделаю... Мне бы главное принципы усвоить и осмыслить...
> Он берет N входных значений перемножает их с импульсной
> характеристикой фильтра, а полоченные результаты скдадывает. Т.е.
> x(n) - входные отсчеты, h(k) - импульсная хар-ка (или
> коэффициенты), y(n) - выходные отсчеты.
> y(n)=x(n)*h(0)+x(n-1)*h(1)+...+x(n-N)*h(N)
> y(n+1)=x(n+1)*h(0)+x(n)*h(1)+...+x(n-N+1)*h(N)
> y(n+2)=x(n+2)*h(0)+x(n+1)*h(1)+...+x(n-N+2)*h(N)
> y(n+3)=x(n+3)*h(0)+x(n+2)*h(1)+...+x(n-N+3)*h(N)
> ....
> Если Вам нужно проредить в 3 раза, то считаются только отсчеты y(n)
> и y(n+3). Остальные отсчеты опускаются. Вот Вам уже экономия в 3
> раза по вычислениям.
Я вот тут не понял только одного. Если этот КИХ - антиалиазинг, то одновременно с прореживанием он будет давить частоты выше Fd/2? Вообще конечно должен, ведь мы выкидываем выходные отсчеты.
И еще, если я хочу сразу прореживать скажем в 5 раз с 48 KHz, то антиалиазинг надо строить в районе 4500 Hz и выкидывать отсчеты соответственно?
> Но это только общий подход. Гораздо лучший результат дает БПФ. В
> принципе, БПФ N-го порядка это набор N фильтров вида sin(x)/x с
> прореживанием в N раз.
> Т.е. на вход каждого фильтра подается N входных отсчетов. Каждый
> фильтр обрабатывает массив (фильтрует) и выполняет прореживание в N
> раз - в результате от массива длинной N остается только один
> отсчет. Но т.к. фильтров всего N, то и отсчетов N.
> Проблема в том, что sin(x)/x - очень слабенький фильтр. Т.е. чтобы
> улучшить его характеристики, нужно усложнять алгоритм.
> Как именно, станет ясно после ответа на вопросы в начале.
Вот по поводу этого - очень интересно... Я то, в силу ограниченности знаний, думал что для прореживания надо будет пользоваться самой простой схемой: антиалиазинг, выкидываем отсчеты, антиалиазинг, выкидываем отсчеты? Если это можно сделать с помощью Фурье, то как?
> Насчет warped FFT, я думаю, это не сильно поможет. Это
> преобразование служит не для ускорения, а для получения частотных
> отсчетов расположенных неравномерно (обычное БПФ их располагает
> равномерно).
Мне как раз ускорения не нужно... Мне нужно увеличивать разрешение в отдельных участках спектра. Очень нужно - в НЧ области, в остальных - желательно...
Большое спасибо за то, что мучаетесь со мной...
E-mail: info@telesys.ru