|
Фильтры фарроу, принципы... |
|
|
|
Dec 1 2009, 14:00
|
Знающий
   
Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195

|
1)Читаю статьи о филтрах Фарроу. Там эти фильтры больше фигурируют как фильтры дробной задержки. Кто-нибудь может объяснить как задержка cигнала связана с передискретизацией, как , скажем, появляются ноыве отсчёты при передискретизации с использованием этих филтров...???
2)Хочу использовать эти фильтры в своей системе, где, например, нужно увеличить частоту дискретизации в 1.037 раз. Просто децимацией и интерполяцией (например функция resample в матлаб) мою задачу, думаю, не решить, т.к. коэффиценты первоначального повышения, а затем понижения частоты слишком велики. Правильно ли я понимаю, что в фильтрах фарроу используется совсем другой подход и они здесь более пригодны...????
как студент буду очень благодарен всем, кто ответит)!
Сообщение отредактировал TigerSHARC - Dec 1 2009, 14:46
|
|
|
|
|
 |
Ответов
|
Dec 1 2009, 15:40
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(TigerSHARC @ Dec 1 2009, 17:00)  1)Читаю статьи о филтрах Фарроу. Там эти фильтры больше фигурируют как фильтры дробной задержки. Кто-нибудь может объяснить как задержка cигнала связана с передискретизацией, как , скажем, появляются ноыве отсчёты при передискретизации с использованием этих филтров...??? Ну например нужно вам вычислить новый отсчёт посередине между двумя исходными - это соответствует задержке кратной половине периода дискретизации, ФНЧ КИХ фильтр с чётным количеством коэффициентов обладает такой задержкой, можно построить набор таких фильтров(полифазный фильтр) под разные дробные задержки и таким образом вычислять фиксированный набор промежуточных отсчётов между исходными. Интерполятор фарроу позволяет легко вычислять отсчёт между исходными с любым положением(дробной задержкой). Цитата(TigerSHARC @ Dec 1 2009, 17:00)  2)Хочу использовать эти фильтры в своей системе, где, например, нужно увеличить частоту дискретизации в 1.037 раз. Просто децимацией и интерполяцией (например функция resample в матлаб) мою задачу, думаю, не решить, т.к. коэффиценты первоначального повышения, а затем понижения частоты слишком велики. Правильно ли я понимаю, что в фильтрах фарроу используется совсем другой подход и они здесь более пригодны...????
как студент буду очень благодарен всем, кто ответит)! Пригоден фарроу. Но требуется некоторая передискретизация для уменьшения искажений. Смотрите ЧХ характеристику интерполятора фарроу для наихудшего случая дробной задержки кратной половине периода дискретизации исходного сигнала, при фиксированном порядке интерполятора чем больше передискретизация тем меньше искажения.
|
|
|
|
|
Dec 2 2009, 21:51
|
Знающий
   
Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195

|
Цитата(petrov @ Dec 1 2009, 18:40)  Ну например нужно вам вычислить новый отсчёт посередине между двумя исходными - это соответствует задержке кратной половине периода дискретизации, ФНЧ КИХ фильтр с чётным количеством коэффициентов обладает такой задержкой, можно построить набор таких фильтров(полифазный фильтр) под разные дробные задержки и таким образом вычислять фиксированный набор промежуточных отсчётов между исходными. Интерполятор фарроу позволяет легко вычислять отсчёт между исходными с любым положением(дробной задержкой).
Пригоден фарроу. Но требуется некоторая передискретизация для уменьшения искажений. Смотрите ЧХ характеристику интерполятора фарроу для наихудшего случая дробной задержки кратной половине периода дискретизации исходного сигнала, при фиксированном порядке интерполятора чем больше передискретизация тем меньше искажения. Никак не даёт покоя вот такой вопрос. Нужно выбрать наименьшую частоту дискретизации. Нужно было как-то связать частоту дискретизации и погрешность интерполятора. В литературе нашёл такую формулу для выбора частоты дискретизации(см. вложение) так вот, как я понял: эпсилон - это погрешность интерполяции(в моём случае фильтром Фарроу, по другому - полиномом Лагранжа 3-й степени). и, если(гипотетически) погрешность равна 0.01(т.е. 1%), и верхняя частота сигнала равна 2200Гц(ну, с учётом неидеальности цифрового фильтра чуть больше). В итоге наименьшая частота дискретизации получилась 48400Гц!!! теперь нужно посчитать реальную погрешность фильтра-интерполятора, что бы более точно выбрать частоту дискретизации. Я всё правильно понял? Или эти формулы справедливы только для линейной интерполяции, и фильтра с крутизной -20дБ??? Вобщем нужно как-то завязать частоту дискретизации минимальную на входе фильтра-интерполятора с погрешностью этого интерполятора и наибольшей частотой в спектре сигнала.
Сообщение отредактировал TigerSHARC - Dec 2 2009, 21:52
Эскизы прикрепленных изображений
|
|
|
|
|
Dec 3 2009, 06:40
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(des00 @ Dec 3 2009, 06:58)  выложите доку, интересно почитать.
Как я понял частота дискретизации выбирается на основе АЧХ/ФЧХ интерполятора, критерии выбора очевидны если вы их построите. А ошибка интерполяции зависит только от порядка интерполятора. Я выкладывал доки на форуме с подробным анализом интерполяторов.
ЗЫ. В вашем случае я бы делал не кубический фарроу порядка, а кубический интерполятор с фильтрами 10го порядка. Он дает меньшую ошибку интерполяции, но дороже в реализации %) Чего такая любовь к полиномиальным интерполяторам? Если памяти дофига и реализация на чем-то вроде микропроцессора стоит посмотреть на банальный интеролятор на основе полифазного FIR. Посчитать такой проще, по вычислительным затратам быстрее. p.s. вот простейший полифазный ресамплер c дополнительной линейной интерполяцией, "спуры" кажется не менее 50 дБ при F<Fs*0.4.
resampler_demo.zip ( 4.51 килобайт )
Кол-во скачиваний: 384
--------------------
ну не художники мы...
|
|
|
|
|
Dec 3 2009, 08:00
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(alex_os @ Dec 3 2009, 09:40)  Чего такая любовь к полиномиальным интерполяторам? Если памяти дофига и реализация на чем-то вроде микропроцессора стоит посмотреть на банальный интеролятор на основе полифазного FIR. Посчитать такой проще, по вычислительным затратам быстрее. Вы, наверное, не смотрели начало дискуссии в другой и третьей темах. Это ему сейчас нужен прецизионный интерполятор для ресамплинга с коэффициентом 1.037. В другой раз ему нужен будет на 0.99 и всё решается в реальном времени. Полифазные фильтры ему не очень подходят, ему нужна адаптивная интерполяция, но в отличие от модемов, с точностью 0.001%. Типа интерполяции Лагранжа по 7-ми точкам, как http://www.springerlink.com/content/r113673647v40251/Цитата(des00 @ Dec 3 2009, 06:58)  ЗЫ. В вашем случае я бы делал не кубический фарроу порядка, а кубический интерполятор с фильтрами 10го порядка. Он дает меньшую ошибку интерполяции, но дороже в реализации %) Не понятно, что есть "кубический фарроу порядка" ( порядка 3?), но результат видимо будет не хуже, чем у тех китайцев.
|
|
|
|
|
Dec 3 2009, 08:30
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(fontp @ Dec 3 2009, 11:00)  Вы, наверное, не смотрели начало дискуссии в другой и третьей темах. Это ему сейчас нужен прецизионный интерполятор для ресамплинга с коэффициентом 1.037. В другой раз ему нужен будет на 0.99 и всё решается в реальном времени. Полифазные фильтры ему не очень подходят, ему нужна адаптивная интерполяция, но в отличие от модемов, с точностью 0.001%. Типа интерполяции Лагранжа по 7-ми точкам, как http://www.springerlink.com/content/r113673647v40251/Дык, я не вижу особой разницы между полиномиальными интерполяторами и полифазными, при произвольном коэф. передискретизации у полифазного будет временной джитер, зато у полиномиального больше искажения АЧХ и то и другое не идеально. Каких нибудь 500 фаз и дело в шляпе  . p.s. А по ссылке не понятно что там такое и как это работает. p.p.s Код что я выше выкладывал кстати работает с произвольными коэф. передискретизации, правда там не совсем честная полифазная интерполяция + еще линейная интерполяция после полифазной.
--------------------
ну не художники мы...
|
|
|
|
|
Dec 3 2009, 20:34
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(alex_os @ Dec 3 2009, 11:30)  ...правда там не совсем честная полифазная интерполяция + еще линейная интерполяция после полифазной. если я не ошибаюсь то линейная интерполяция скрыта в этой строчке кода poutBuf[count]=(m_b-m_a)*m_rem*m_recdt+m_a; и еще вопрос. можно ли повысить точность за счет применения в этом месте сплайн интерполяции или может быть другого какого-нибудь вида. и если можно покажите как это можно сделать. спасибо
|
|
|
|
|
Dec 4 2009, 11:00
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(Serg76 @ Dec 3 2009, 23:34)  если я не ошибаюсь то линейная интерполяция скрыта в этой строчке кода
poutBuf[count]=(m_b-m_a)*m_rem*m_recdt+m_a;
и еще вопрос. можно ли повысить точность за счет применения в этом месте сплайн интерполяции или может быть другого какого-нибудь вида. и если можно покажите как это можно сделать. спасибо Да именно в этом месте линейная интерполяция. Сплайн можно применить но придется все переделать. Сейчас это работает так: пусть мы желаем знать значение x(t), для этого с помощью полифазного фильтра вычисляются значения x(n*T), x(n*T+T), так чтобы n*T < t <= n*T+T (n - целое, Fs входная частота дискретизации, T = 1/Fs/8, 8 число "фаз" фильтра ) далее, путем линейной интерполяции из x(n*T), x(n*T+T) получаем оценку x(t). Для сплайна двух точек недостаточно, т.е. например, нужно вычислить x(n*T-T*2), x(n*T-T), x(n*T), x(n*T+T) и через эти точки провести сплайн. Я бы для повышения точности просто увеличил число фаз, вычислительные затраты при этом остались бы примерно такими же.
--------------------
ну не художники мы...
|
|
|
|
Сообщений в этой теме
TigerSHARC Фильтры фарроу Dec 1 2009, 14:00    des00 Цитата(alex_os @ Dec 3 2009, 00:40) Чего ... Dec 3 2009, 07:06      fontp Цитата(alex_os @ Dec 3 2009, 11:30) Дык, ... Dec 3 2009, 08:58       alex_os Цитата(fontp @ Dec 3 2009, 11:58) Тогда д... Dec 3 2009, 09:34        Serg76 Цитата(alex_os @ Dec 4 2009, 14:00) Да им... Dec 4 2009, 11:17     TigerSHARC [quote name='fontp' date='Dec 3 2009, ... Dec 3 2009, 08:48      bahurin Цитата(TigerSHARC @ Dec 3 2009, 11:48) но... Dec 3 2009, 09:25       TigerSHARC Цитата(bahurin @ Dec 3 2009, 12:25) Там ж... Dec 3 2009, 15:27        alexkok Цитата(TigerSHARC @ Dec 3 2009, 19:27) Ес... Dec 3 2009, 18:06         TigerSHARC Цитата(alexkok @ Dec 3 2009, 21:06) ИМХО ... Dec 3 2009, 19:02          alexkok Цитата(TigerSHARC @ Dec 3 2009, 23:02) Я ... Dec 3 2009, 21:50          alexkok Цитата(TigerSHARC @ Dec 3 2009, 23:02) Я ... Dec 3 2009, 23:48    des00 Цитата(alex_os @ Dec 3 2009, 00:40) p.s. ... Dec 3 2009, 10:38     alex_os Цитата(des00 @ Dec 3 2009, 13:38) реализу... Dec 3 2009, 11:03 TigerSHARC Спасибо! Dec 1 2009, 15:58 thermit Почитайте про интерполяцию лагранжа... И вообще, п... Dec 1 2009, 16:24 TigerSHARC Цитата(thermit @ Dec 1 2009, 19:24) Почит... Dec 2 2009, 20:37 thermit ЦитатаTigerSHARC:
но скажите, что по этой формуле(... Dec 3 2009, 12:30 thermit ЦитатаTigerSHARC:
Так вот! Вопрос стоит вопрос... Dec 4 2009, 10:27 TigerSHARC Цитата(thermit @ Dec 4 2009, 13:27) Для к... Dec 4 2009, 12:14 thermit ЦитатаTigerSHARC:
Боюсь покзатться назойливым(или ... Dec 4 2009, 13:03
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|