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

 
 
> вопрос про интерполяцию
jorikdima
сообщение Nov 5 2010, 16:45
Сообщение #1


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Здравствуйте.
Возник вопрос, который быть может, надуман, но хочется разобраться.
Есть сигнал - результат НЧ фильтрации исходного сигнала с целью определить его постоянную составляющую. То есть полоса сигнала в общем то составляет доли Герца, но среднее значение (или нулевая гармоника) может варьироваться в довольно большом диапазоне. Частоту дискретизации этого сигнала нужно поднять в 25 раз, для чего требуется провести интерполяцию. В книжках прочитал, что делается это с помощью добавления нужного числа нулей между исходными отсчетами и пропусканием через ФНЧ для удаления размноженных гармоник. В принципе все работает, но появляются артефакты. Дело в том, что во всех книжках, где рассказывается про интерполяцию, нарисован сигнал с околонулевой постоянной составляющей, ну либо нулевая гармоника много меньше других гармоник в сигнале. И тут все прекрасно, добавляются нули, затем они сглаживаются ФНЧ. Но в случае когда, нулевая гармоника является преобладающей добавление в сигнал отсчетов, сильно отличающихся от текущего значения сигнала (а именно нулевые отсчеты) каждый раз вызывают всплеск на выходе фильтра, пропорциональный разнице между нулем и реальным значением сигнала и зависящим от ИХ фильтра. Этот всплеск у меня много больше шума исходного сигнала, являющейся собственно постоянным током и недопустим.
Что делают гуру в таких ситуациях?
У самого есть идея следующая. Не добавлять нулевых отсчетов и не ставить ФНЧ, а вписывать какой-нибудь полином, тот же сплайн, в реальные отсчеты сигнала, а затем, найдя коэффициенты сплайна, рассчитывать 24 значения между исходными выборками. Минус такого решения, что это не риал тайм, нужно дождаться следующего отсчета прежде чем получить 24 точки до него, но мне не страшно это.
Справедливо ли решение или есть какие-то более мудрые действия?
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jorikdima
сообщение Nov 5 2010, 20:16
Сообщение #2


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(Stanislav @ Nov 5 2010, 22:24) *
Думаю, в данном случае можно попытаться обойтись без прореживания.
Соорудив простейший адаптивный фильтр на частоте дискретизации.
Разностное уравнение:
Y(k)=a*X(k)+ (1-a)Y(k-1),
где Y(k) - текущая оценка постоянной составляющей, X(k) - текущий входной отсчёт, Y(k-1) - оценка постоянной составляющей на предыдущем шаге, a - весьма малый коэффициент, определяющий динамику системы.

Инициализировать оцениватель нужно так:
Y(0)=X(0).

Недостатком является необходимость применения повышенной разрядности вычислений, если есть желание получить несмещённую оценку, т.к, в этом случае, усекать разрядность X(k) нежелательно.

С разрядностью проблем нет, все работает на ПК с использованием double либо single.
Буду думать. А не будет проблем в применении тут БИХ фильтра? Я вот не соображу требование линейности фазы при удалении постоянной составляющей необходимо?

Цитата(sup-sup @ Nov 5 2010, 23:01) *
Если использована вся разрядность вычисления, то надо проверить на большей длине фильтра, необходимой для увеличения затухания вне полосы. Наверное, у Вас полезный сигнал на десятки дБ меньше постоянной составляющей. А нельзя ли вначале грубо вычесть основную часть постоянной составляющей, а потом дофильтровать?

Да, полезный сигнал действительно может быть децибел на 80 по амплитуде меньше постоянной составляющей.
Насчет грубого вычитания как раз и думал в первую очередь.
С другой стороны, чем плоха вставка не нулей, а предыдущих значений в моем случае... ну и пусть АЧХ сигнала с постоянной составляющей будет с дополнительным подавлением sin(x)/x, от этого постоянная составляющая не перестанет быть ей, единственное что наверное расчетная частота среза фильтра пострадает.
Спасибо всем, буду думать над предложениями!
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Nov 6 2010, 11:06
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(jorikdima @ Nov 5 2010, 23:16) *
С разрядностью проблем нет, все работает на ПК с использованием double либо single.
Буду думать. А не будет проблем в применении тут БИХ фильтра? Я вот не соображу требование линейности фазы при удалении постоянной составляющей необходимо?

Да, полезный сигнал действительно может быть децибел на 80 по амплитуде меньше постоянной составляющей.
Насчет грубого вычитания как раз и думал в первую очередь.
С другой стороны, чем плоха вставка не нулей, а предыдущих значений в моем случае... ну и пусть АЧХ сигнала с постоянной составляющей будет с дополнительным подавлением sin(x)/x, от этого постоянная составляющая не перестанет быть ей, единственное что наверное расчетная частота среза фильтра пострадает.
Простите, но мне не совсем понятен Ваш подход.
Плясать нужно от определений. Зачем Вам какая-то децимация, если нужно найти оценку постоянной составляющей (сиречь, матожидания - МО) сигнала?
Если волнует проблема нелинейности фазы БИХ-фильтра, соорудите КИХ-фильтр на частоте дискретизации. Оптимальным в смысле СКО оценки МО на заданной последовательности длины N является просто усреднение её элементов, которому в случае непрерывного поступающих отсчётов соответствует фильтр скользящего среднего длины N.

(1)

Инициализировать память такого фильтра можно значением X(0) - переходный процесс при этом будет существенно уменьшен. Можно придумать и более "продвинутые" способы, обеспечивающие лучшую сходимость к оптимальному значению.
Такой фильтр не содержит умножений при накоплении, а если выбрать N равным степени двойки, операция умножения на коэффициент 1/N реализуется при помощи сдвига с округлением.
Если требуемая длина фильтра получается большой, количество операций в нём можно радикально изменить, преобразовав его в рекурсивный вид. Для этого, положим

(2)

Убедиться в эквивалентности (1) и (2) могут все желающие. smile.gif
Фильтр содержит только 3 операции сложения/вычитания и одну операцию сдвига (умножения на к-т) на отсчёт, и это количество не зависит от его длины! Промежуточный результат накопления Y(n) должен содержаться в регистре повышенной разрядности, дабы получить несмещённую оценку.
Способ инициализации такого фильтра попробуйте предложить сами. smile.gif


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Nov 6 2010, 13:37
Сообщение #4


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(Stanislav @ Nov 6 2010, 14:06) *
Простите, но мне не совсем понятен Ваш подход.
Плясать нужно от определений. Зачем Вам какая-то децимация, если нужно найти оценку постоянной составляющей (сиречь, матожидания - МО) сигнала?
Если волнует проблема нелинейности фазы БИХ-фильтра, соорудите КИХ-фильтр на частоте дискретизации.

Если рассчитать КИХ фильтр на частоте дискретизации (это, понятно, первая мысль, которая приходит в голову), то его порядок получается что-то вроде 4000-5000, если память не изменяет. Это потому что отношение частоты среза к частоте дискретизации 10^-4
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Nov 6 2010, 13:45
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(jorikdima @ Nov 6 2010, 16:37) *
Если рассчитать КИХ фильтр на частоте дискретизации (это, понятно, первая мысль, которая приходит в голову), то его порядок получается что-то вроде 4000-5000, если память не изменяет. Это потому что отношение частоты среза к частоте дискретизации 10^-4
Ваши сомнения мне непонятны...
Если память позволяет, пуркуа бы и не па?
Рассчитывать там особенно ничего не надо: все коэффициенты равны 1 или -1. Проще пареной репы, да ещё и оптимально к тому же... smile.gif


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
Самурай
сообщение Nov 6 2010, 19:59
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066



Цитата(Stanislav @ Nov 6 2010, 16:45) *
Ваши сомнения мне непонятны...
Если память позволяет, пуркуа бы и не па?
Рассчитывать там особенно ничего не надо: все коэффициенты равны 1 или -1. Проще пареной репы, да ещё и оптимально к тому же... smile.gif


Фильтр скользящего усреднения со всеми единичными коэффициентами имеет довольно паршивую АЧХ в области пропускания и, особенно, в области подавления: первый лепесток АЧХ всего лишь 1/5 от основного, да и остальные весьма хреново спадают. Ситуация с подавлением улучшается последовательным включением нескольких таких фильтров, но опять таки, это очень далеко по характеристикам от оптимального фильтра, хотя и требует гораздо меньше вычислений.

Что касается основного вопроса автора, то, как уже было замечено, Вы, скорее всего где-то ошибаетесь. Возможно у Вас слишком короткий фильтр, или же неправильно выбрана задержка сигнала. Есть еще один момент: если Вы хотите обеспечить подавление низких частот на уровне 80дБ, то все ФНЧ в дециматоре и интерполяторе должны иметь пульсации в области пропускания такого же порядка! К подавлению требования наверно еще более жесткие.

В прикрепленном файле простейшая модель для Simulinkа, только я немного уменьшил Ваши требования к соотношению частот среза и дискретизации: Fd = 1MHz, Fpass = 500Hz, Fstop = 1500Hz. На картинке результат моделирования:
Прикрепленное изображение


Прикрепленные файлы
Прикрепленный файл  LP_FIR_Decim_Interp.zip ( 20.01 килобайт ) Кол-во скачиваний: 18
 
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Nov 7 2010, 00:39
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(Самурай @ Nov 6 2010, 22:59) *
Фильтр скользящего усреднения со всеми единичными коэффициентами имеет довольно паршивую АЧХ в области пропускания и, особенно, в области подавления: первый лепесток АЧХ всего лишь 1/5 от основного, да и остальные весьма хреново спадают.
Свят-свят, братцы... Ей-богу, до несварения желудка довести способны...
При чём здесь АЧХ, если нужно произвести оценку постоянной составляющей сигнала? ДУМАЙТЕ прежде, чем отвечать и приводить графики.

Цитата(jorikdima @ Nov 7 2010, 00:36) *
Спасибо всем большое, не ожидал, что тема вызовет бурный интерес. Мне нужно некоторое время, чтобы осознать все предложения по решению проблемы и самому все промоделировать.
Проторенных дорог не существует. Но рано или поздно всё получится. smile.gif


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- jorikdima   вопрос про интерполяцию   Nov 5 2010, 16:45
- - alexPec   А если не нулями 24 отсчета забивать, а собственно...   Nov 5 2010, 17:08
|- - Designer56   Цитата(alexPec @ Nov 5 2010, 22:08) А есл...   Nov 5 2010, 18:00
- - Stanislav    Цитата(jorikdima @ Nov 5 2010, 19:45) Эт...   Nov 5 2010, 17:16
- - des00   Цитата(jorikdima @ Nov 5 2010, 10:45) У с...   Nov 5 2010, 17:20
|- - Stanislav   Цитата(des00 @ Nov 5 2010, 20:20) потребу...   Nov 5 2010, 17:23
||- - des00   Цитата(Stanislav @ Nov 5 2010, 11:23) По...   Nov 5 2010, 17:27
||- - Stanislav   Цитата(des00 @ Nov 5 2010, 20:27) Под зер...   Nov 5 2010, 17:32
||- - des00   Цитата(Stanislav @ Nov 5 2010, 11:32) Это...   Nov 5 2010, 17:37
||- - Stanislav   Цитата(des00 @ Nov 5 2010, 20:37) модель ...   Nov 5 2010, 17:58
|- - _Pasha   Цитата(des00 @ Nov 5 2010, 20:20) потребу...   Nov 5 2010, 17:30
|- - des00   Цитата(_Pasha @ Nov 5 2010, 11:30) Полино...   Nov 5 2010, 17:33
- - Stanislav   Понеслась нелёгкая, похоже...   Nov 5 2010, 17:36
- - thermit   Цитатаjorikdima: Что делают гуру в таких ситуациях...   Nov 5 2010, 17:51
- - sup-sup   Цитата(jorikdima @ Nov 5 2010, 19:45) Здр...   Nov 5 2010, 18:49
|- - Stanislav   Цитата(sup-sup @ Nov 5 2010, 21:49) ...   Nov 5 2010, 19:24
|- - bahurin   1. Если надо оценить постоянную составляющую то на...   Nov 7 2010, 12:23
|- - Tanya   Цитата(bahurin @ Nov 7 2010, 15:23) 1. Ес...   Nov 7 2010, 12:51
||- - bahurin   Цитата(Tanya @ Nov 7 2010, 15:51) Все пра...   Nov 7 2010, 13:22
||- - Tanya   Цитата(bahurin @ Nov 7 2010, 16:22) Приве...   Nov 7 2010, 13:39
||- - bahurin   Цитата(Tanya @ Nov 7 2010, 16:39) А если ...   Nov 7 2010, 13:57
|- - jorikdima   Цитата(bahurin @ Nov 7 2010, 15:23) 3. Ес...   Nov 7 2010, 13:04
||- - bahurin   Цитата(jorikdima @ Nov 7 2010, 16:04) Да,...   Nov 7 2010, 13:37
||- - sup-sup   Цитата(bahurin @ Nov 7 2010, 17:37) 1. фи...   Nov 7 2010, 14:05
|||- - bahurin   Цитата(sup-sup @ Nov 7 2010, 17:05) ...   Nov 7 2010, 14:56
|||- - sup-sup   Не могу быстро ответить про Матлабовский пример. К...   Nov 7 2010, 15:11
||||- - bahurin   Цитата(sup-sup @ Nov 7 2010, 18:11) ...   Nov 7 2010, 15:49
||||- - sup-sup   Цитата(bahurin @ Nov 7 2010, 19:49) Вот т...   Nov 7 2010, 18:07
||||- - sup-sup   Прикидка размеров фильтров для интерполяции на 25 ...   Nov 7 2010, 21:09
||||- - bahurin   Цитата(sup-sup @ Nov 7 2010, 21:07) ...   Nov 8 2010, 05:10
||||- - sup-sup   Цитата(bahurin @ Nov 8 2010, 08:10) Вот с...   Nov 8 2010, 05:59
|||- - Самурай   Цитата(bahurin @ Nov 7 2010, 17:56) >Ц...   Nov 7 2010, 16:17
||- - jorikdima   Цитата(bahurin @ Nov 7 2010, 16:37) Если ...   Nov 7 2010, 14:48
|- - sup-sup   Цитата(bahurin @ Nov 7 2010, 15:23) 1. Ес...   Nov 7 2010, 13:24
- - jorikdima   Цитата(alexPec @ Nov 5 2010, 20:08) А есл...   Nov 5 2010, 19:09
|- - sup-sup   Цитата(jorikdima @ Nov 5 2010, 22:09) На ...   Nov 5 2010, 20:01
|- - des00   Цитата(jorikdima @ Nov 5 2010, 13:09) Ито...   Nov 6 2010, 05:31
|- - sup-sup   Цитата(jorikdima @ Nov 6 2010, 00:16) С р...   Nov 5 2010, 20:30
|- - sup-sup   Цитата(Stanislav @ Nov 7 2010, 04:39) При...   Nov 7 2010, 08:20
- - jorikdima   Спасибо всем большое, не ожидал, что тема вызовет ...   Nov 6 2010, 21:36


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

 


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


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