реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Фильтры фарроу, принципы...
des00
сообщение Dec 3 2009, 10:38
Сообщение #16


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(alex_os @ Dec 3 2009, 00:40) *
p.s. вот простейший полифазный ресамплер c дополнительной линейной интерполяцией, "спуры" кажется не менее 50 дБ при F<Fs*0.4.


реализуйте это на фпга и оцените ресурс %)

Цитата(fontp @ Dec 3 2009, 02:00) *
Не понятно, что есть "кубический фарроу порядка" ( порядка 3?), но результат видимо будет не хуже, чем у тех китайцев.


да 3 го порядка, я оцениваю размер полинома по количеству умножений на mu


--------------------
Go to the top of the page
 
+Quote Post
alex_os
сообщение Dec 3 2009, 11:03
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(des00 @ Dec 3 2009, 13:38) *
реализуйте это на фпга и оцените ресурс %)


На счет FPGA полностью с Вами согласен, альтернативы структуре Фарроу нет.


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
thermit
сообщение Dec 3 2009, 12:30
Сообщение #18


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
TigerSHARC:
но скажите, что по этой формуле(страница книги) для частоты дискретизации её можно использовать в моём случае ???
там пример если точность 0.01...
нужно как-то выбрать частоту дискретизации, что бы подать на вход интерполятора, и уже её изменять интерполяцией...


Думаю, формулень на этой странице несколько стремная...

Есть широко известная в узких кругах теорема о погрешности интерполяции.
Приводить ее тут не буду, но приведу оценку погрешности при интерполяции синусоиды частоты f0 по отсчетам взятым с частотой fd полиномом лагранжа 3-й степени:


err <= (3/8)*(pi^4)*((f0/fd)^4)

отсюда можно выразить либо f0, либо fd для заданной погрешности err

Конечно, если речь идет о интерполяции широкополосного сигнала с верхней частотой f0, то погрешность интерполяции будет фактически складываться из погрешностей от каждой спектральной компоненты лежащих ниже f0.

Цитата
alex_os:
На счет FPGA полностью с Вами согласен, альтернативы структуре Фарроу нет.


Если оверсемплинг позволяет выполнить лагранжа с приемлемой точностью - то да.
А если нет - один фик в полифазник упрешься...

Сообщение отредактировал thermit - Dec 3 2009, 12:32
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Dec 3 2009, 15:27
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Цитата(bahurin @ Dec 3 2009, 12:25) *
Там же написано что это для синусоидального сигнала. Если сигнал несинусоидальный про эту формулу можно забыть. Вам нужно понять что вы хотите. Если сигнал с цифровой модуляцией, скажем QPSK и требуется дробный ресамплер для синхронизации, то надо понять с какой точностью необходимо производить ресамплинг. Поскольку фильтры Фарроу - интерполяторы Лагранжа, то для них есть оценка ошибки в зависимости от порядка полиномов. Исходя из требуемой ошибки вырбрать порядок фильтра Фарроу и реализовать. В принципе на Фарроу свет клином не сошелся и можно использовать любой метод интерполяции ( кусочно полиномиальные сплайны и прочее). Осталось только понять какой метод интерполяции удовлетворит вас с точки зрения точности восстановления. То что вы привели 1% точности, это скорее справедливо для аналоговой передачи.


Есть сигнал содержащий в себе основную гармонику ( fосн = 50Гц) и кратные ей высшие...
При этом основная гармоника случайно меняется от 45 до 55 Гц.
нужно построить правильный спектр гармоник (до 40-й включительно). Пусть сигнал дискретизирован с некторой частотой(????) и отфильтрован строго до 2200Гц (40-я гармноника для fосн = 55Гц).
Теперь необходимо передискретизировать сигнал, с учётом измеренного значения частоты основной гармоники.
Для того, чтобы предотвратить "растекание" спектра, т.к. при дискретизации на фиксированной частоте во временное окно уместится неполное число периодов сигнала.
Только так можно получить верный спектр. Этот метод производится как альтернатива оконному взвешиванию.
Никакая аппаратная передискретизация не годится.
Вот суть вопроса!

Теперь о порядке фильтра Фарроу.
Пользователь Евгений Николаев писал:

"В вашей задаче (если речь про Фурье всех гармоник) как раз Фарроу 3-го порядка и достаточен и вот почему:
1. Частота дискретизации, по-любому, из соображений точности должна накрывать сигнал так, чтобы на интервале между соседними 3-4 выборками сигнал мало отличался от 3-го порядка, т.к. иначе Вы с достаточной степенью точности этот сигнал не отфильтруете из-за вносимых искажений от гармоник более высоких порядков.
2. Т.к. исходный сигнал, всё-таки, содержит небольшой шум АЦП, к включению которого в огибающую интерполятор будет стремиться в меру своей степени, то наращивание порядка интерполяции приведёт к генерации несуществующих компонент. "

погрешность интерполяции зависит от порядка... я так думаю.

Так вот! Вопрос стоит вопрос в том, чтобы по какому-либо правилу выбрать частоту дискретизации приходящую на интерполятор!!!!????????
и всё...)

Сообщение отредактировал TigerSHARC - Dec 3 2009, 15:29
Go to the top of the page
 
+Quote Post
alexkok
сообщение Dec 3 2009, 18:06
Сообщение #20


Знающий
****

Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837



Цитата(TigerSHARC @ Dec 3 2009, 19:27) *
Есть сигнал содержащий в себе основную гармонику ( fосн = 50Гц) и кратные ей высшие...
При этом основная гармоника случайно меняется от 45 до 55 Гц.
нужно построить правильный спектр гармоник (до 40-й включительно). Пусть сигнал дискретизирован с некторой частотой(????) и отфильтрован строго до 2200Гц (40-я гармноника для fосн = 55Гц).
Теперь необходимо передискретизировать сигнал, с учётом измеренного значения частоты основной гармоники.
Для того, чтобы предотвратить "растекание" спектра, т.к. при дискретизации на фиксированной частоте во временное окно уместится неполное число периодов сигнала.
Только так можно получить верный спектр. Этот метод производится как альтернатива оконному взвешиванию.
Никакая аппаратная передискретизация не годится.
Вот суть вопроса!

ИМХО Вы ошибочно зациклились на передискретизации.
"суть вопроса" не в передискретизации, а в наиболее точной оценке спектра.
Предлагаю другой вариант.
Это fitting.
Процедура такая:
1. Накладываем окно с малым уровнем боковиков (<90дБ) на входной массив.
2. Делаем ДПФ на основной частоте, результаты ДПФ используем как входные данные для фиттинга.
3. Определяем с помощью фиттинга частоту и фазу основной гармоники по минимуму в одной из квадратур.
Естественно при каждой итерации повторяя п.2.
4. Если есть желание, определяем фиттингом же первую производную частоты.
5. После этого можно также ограничить импульсные помехи, если они есть, и повторить п. 3, 4.
6. Получив параметры основной частоты вычисляем при помощи ДПФ все гармоники.


--------------------
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Dec 3 2009, 19:02
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Цитата(alexkok @ Dec 3 2009, 21:06) *
ИМХО Вы ошибочно зациклились на передискретизации.
"суть вопроса" не в передискретизации, а в наиболее точной оценке спектра.
Предлагаю другой вариант.
Это fitting.
Процедура такая:
1. Накладываем окно с малым уровнем боковиков (<90дБ) на входной массив.
2. Делаем ДПФ на основной частоте, результаты ДПФ используем как входные данные для фиттинга.
3. Определяем с помощью фиттинга частоту и фазу основной гармоники по минимуму в одной из квадратур.
Естественно при каждой итерации повторяя п.2.
4. Если есть желание, определяем фиттингом же первую производную частоты.
5. После этого можно также ограничить импульсные помехи, если они есть, и повторить п. 3, 4.
6. Получив параметры основной частоты вычисляем при помощи ДПФ все гармоники.


Я исхожу из суждений приведённых в данном документе(см вложение).
Жду комментарии всех, кто отвечал на форуме по моей теме.
Прикрепленные файлы
Прикрепленный файл  ___________.rar ( 594.01 килобайт ) Кол-во скачиваний: 54
 
Go to the top of the page
 
+Quote Post
Serg76
сообщение Dec 3 2009, 20:34
Сообщение #22


Профессионал
*****

Группа: Участник
Сообщений: 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;

и еще вопрос. можно ли повысить точность за счет применения в этом месте сплайн интерполяции или может быть другого какого-нибудь вида. и если можно покажите как это можно сделать. спасибо
Go to the top of the page
 
+Quote Post
alexkok
сообщение Dec 3 2009, 21:50
Сообщение #23


Знающий
****

Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837



Цитата(TigerSHARC @ Dec 3 2009, 23:02) *
Я исхожу из суждений приведённых в данном документе(см вложение).
Жду комментарии всех, кто отвечал на форуме по моей теме.


Сообщение отредактировал alexkok - Dec 3 2009, 21:59


--------------------
Go to the top of the page
 
+Quote Post
alexkok
сообщение Dec 3 2009, 23:48
Сообщение #24


Знающий
****

Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837



Цитата(TigerSHARC @ Dec 3 2009, 23:02) *
Я исхожу из суждений приведённых в данном документе(см вложение).
Жду комментарии всех, кто отвечал на форуме по моей теме.

В предыдущем посте была арифметическая ошибка, поэтому удалил. Как удалять пост совсем - не знаю.
Если взять в качестве худшего случая изменение частоты с 45 до 55Гц за 1 час, то получаем относительную скорость изменения частоты 0.000055 в сек.
Для 40-й гармоники набежит 10гр. за 0.5сек.
Т. е. ошибка 0.01% от основной гармоники будет уже при уровне 0.2% 40-й гармоники даже при идеальной передискретизации.
А если ещё взять запас на метрологию...
Так что без производных частоты (и фиттинга) тут не обойтись, разве что при больших ограничениях на худший случай.


--------------------
Go to the top of the page
 
+Quote Post
thermit
сообщение Dec 4 2009, 10:27
Сообщение #25


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
TigerSHARC:
Так вот! Вопрос стоит вопрос в том, чтобы по какому-либо правилу выбрать частоту дискретизации приходящую на интерполятор!!!!????????
и всё...)


Для кубической интерполяции лагранжа

fd >= [ (3/8) * ((pi^4)/error) * SUM (i*f)^4 ]^(1/4)

Суммирование по i = 1 ... 40



Задаетесь первой гармоникой f, нужной ошибкой error и вычисляете минимальную исходную частоту дискретизации.
Например для error=0.01 и f=55 fdmin ~ 29211

Сообщение отредактировал thermit - Dec 4 2009, 10:28
Go to the top of the page
 
+Quote Post
alex_os
сообщение Dec 4 2009, 11:00
Сообщение #26


Знающий
****

Группа: Свой
Сообщений: 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) и через эти точки провести сплайн. Я бы для повышения точности просто увеличил число фаз, вычислительные затраты при этом остались бы примерно такими же.


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
Serg76
сообщение Dec 4 2009, 11:17
Сообщение #27


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(alex_os @ Dec 4 2009, 14:00) *
Да именно в этом месте линейная интерполяция. Сплайн можно применить но придется все переделать. Сейчас это работает так: пусть мы желаем знать значение 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) и через эти точки провести сплайн. Я бы для повышения точности просто увеличил число фаз, вычислительные затраты при этом остались бы примерно такими же.

спасибо. именно таким образом как вы написали у меня интерполятор и работает. увеличение числа фаз приводит к незначительному повышению помехоустойчивости демодулятора в целом (практически незаметному). на вычислительные затраты это увеличение числа фаз тоже не влияет. поэтому я и спросил насчет сплайна или других полиномиальных аппроксимаций. может удастся за счет этого больше повысить качество ресамплера. да, при этом придется переделывать ресамплер. может попробовать комбинацию полифазного фильтра и затем фильтра Ферроу? просто у меня полифазный фильтр еще совмещен и с фильтром основной селекции.
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Dec 4 2009, 12:14
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Цитата(thermit @ Dec 4 2009, 13:27) *
Для кубической интерполяции лагранжа

fd >= [ (3/8) * ((pi^4)/error) * SUM (i*f)^4 ]^(1/4)

Суммирование по i = 1 ... 40



Задаетесь первой гармоникой f, нужной ошибкой error и вычисляете минимальную исходную частоту дискретизации.
Например для error=0.01 и f=55 fdmin ~ 29211


Боюсь покзатться назойливым(или даже глупым smile3046.gif )...
но откуда всзята эта формула???
Go to the top of the page
 
+Quote Post
thermit
сообщение Dec 4 2009, 13:03
Сообщение #29


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
TigerSHARC:
Боюсь покзатться назойливым(или даже глупым )...
но откуда всзята эта формула???


http://en.wikipedia.org/wiki/Polynomial_interpolation

Воспользовавшись формулой http://upload.wikimedia.org/math/a/9/c/a9c...f0b18f3d3cd.png
Можно вывести формулу погрешности для синусоиды.

err <= (3/8)*(pi^4)*((f0/fd)^4)

И распространить ее на сумму гармоник:

err<=(3/8)*(pi^4)*(SUM(i*f0/fd)^4) k=1 ... 40


Отсюда можно получить формулу из поста...
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2025 - 11:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01533 секунд с 7
ELECTRONIX ©2004-2016