|
вопрос про интерполяцию |
|
|
|
Nov 5 2010, 16:45
|

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

|
Здравствуйте. Возник вопрос, который быть может, надуман, но хочется разобраться. Есть сигнал - результат НЧ фильтрации исходного сигнала с целью определить его постоянную составляющую. То есть полоса сигнала в общем то составляет доли Герца, но среднее значение (или нулевая гармоника) может варьироваться в довольно большом диапазоне. Частоту дискретизации этого сигнала нужно поднять в 25 раз, для чего требуется провести интерполяцию. В книжках прочитал, что делается это с помощью добавления нужного числа нулей между исходными отсчетами и пропусканием через ФНЧ для удаления размноженных гармоник. В принципе все работает, но появляются артефакты. Дело в том, что во всех книжках, где рассказывается про интерполяцию, нарисован сигнал с околонулевой постоянной составляющей, ну либо нулевая гармоника много меньше других гармоник в сигнале. И тут все прекрасно, добавляются нули, затем они сглаживаются ФНЧ. Но в случае когда, нулевая гармоника является преобладающей добавление в сигнал отсчетов, сильно отличающихся от текущего значения сигнала (а именно нулевые отсчеты) каждый раз вызывают всплеск на выходе фильтра, пропорциональный разнице между нулем и реальным значением сигнала и зависящим от ИХ фильтра. Этот всплеск у меня много больше шума исходного сигнала, являющейся собственно постоянным током и недопустим. Что делают гуру в таких ситуациях? У самого есть идея следующая. Не добавлять нулевых отсчетов и не ставить ФНЧ, а вписывать какой-нибудь полином, тот же сплайн, в реальные отсчеты сигнала, а затем, найдя коэффициенты сплайна, рассчитывать 24 значения между исходными выборками. Минус такого решения, что это не риал тайм, нужно дождаться следующего отсчета прежде чем получить 24 точки до него, но мне не страшно это. Справедливо ли решение или есть какие-то более мудрые действия? Спасибо.
|
|
|
|
|
 |
Ответов
(1 - 45)
|
Nov 5 2010, 17:08
|
Профессионал
    
Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968

|
А если не нулями 24 отсчета забивать, а собственно самим отсчетом? А потом также через ФНЧ. Т.е. не 14,0,0,0,0....18,0,0...20,0,0 а так: 14,14,14,14.......18,18,18.....20,20,20
|
|
|
|
|
Nov 5 2010, 17:16
|

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

|
Цитата(jorikdima @ Nov 5 2010, 19:45)  Этот всплеск у меня много больше шума исходного сигнала, являющейся собственно постоянным током и недопустим. Что делают гуру в таких ситуациях? Тут кто во что горазд. Попробуйте, например, отобразить сигнал зеркально относительно нулевого отсчёта времени. Или инициализировать память фильтра матожиданием сигнала. Про гуру Вы загнули, даже отвечать стрёмно... Цитата(jorikdima @ Nov 5 2010, 19:45)  ...Справедливо ли решение или есть какие-то более мудрые действия? Линейная фильтрация - лишь частный приближённый способ интерполяции сигнала, основанный на предположении об ограниченности его спектра. А так, конечно, можно и короткие сплайны применить. Только при этом возникнут нелинейные искажения исходного сигнала. Длинные же сплайны могут дать меньшие искажения, но всё равно будут осциллировать на краях. ЗЫ. Это на пальцах, простите... ЗЗЫ. О том, что у любого ФНЧ существует задержка, не забыли? Кроме того, Вы не привели тип использованного фильтра-интерполятора. Я понял так, что это БИХ или минимально-фазовый, но необходимо уточнить.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 5 2010, 17:27
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Stanislav @ Nov 5 2010, 11:23)  Под зеркалами, хотя это и не правильно, я понимаю то что автор назвал "ФНЧ для удаления размноженных гармоник". Ошибки интерполяции приведут к тому, что они хотя и будут подавлены 30-50дБ, но все равно будут (модель в симулинке, которая демонстрирует этот эффект собирается на раз-два-три) Цитата При чём здесь нулевая ПЧ, не просветите? У автора проблема с обработкой сигнала на околонулевой ПЧ, то пусть рассмотрит вариант ухода на нормальную, пусть и низкую ПЧ. В ноль снесет уже в цифре, после интерполяции и демодуляции.
--------------------
|
|
|
|
|
Nov 5 2010, 17:32
|

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

|
Цитата(des00 @ Nov 5 2010, 20:27)  Под зеркалами, хотя это и не правильно, я понимаю то что автор назвал "ФНЧ для удаления размноженных гармоник". Ошибки интерполяции приведут к тому, что они хотя и будут подавлены 30-50дБ, но все равно будут Это неверно. Полиномиальная интерполяция способна подавить то, что Вы называете "зеркалами", на любую заданную величину. PS. Речь идёт о сплайн-интерполяции, конечно. Как того и хочет Автор темы. Цитата(des00 @ Nov 5 2010, 20:27)  У автора проблема с обработкой сигнала на околонулевой ПЧ, то пусть рассмотрит вариант ухода на нормальную, пусть и низкую ПЧ. Это он Вам сообщил, или сами догадались?
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 5 2010, 17:37
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Stanislav @ Nov 5 2010, 11:32)  Это неверно. Полиномиальная интерполяция способна подавить то, что Вы называете "зеркалами", на любую заданную величину. модель в Simulink е в студию, спектр со скруглением RRC = 0.15, интерполяция ну положим на 16ть. Модель должна демонстрировать выходной спектр сигнала. Интерполятор возьмите любой. Нет модели, нет разговора. Цитата Это он Вам сообщил, или сами догадались? Вам хочется пофлудить, после длительного молчания, или вы сознательно не прочитали слова автора топика "Есть сигнал - результат НЧ фильтрации исходного сигнала с целью определить его постоянную составляющую. То есть полоса сигнала в общем то составляет доли Герца, но среднее значение (или нулевая гармоника) может варьироваться в довольно большом диапазоне."
--------------------
|
|
|
|
|
Nov 5 2010, 17:51
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Цитата jorikdima: Что делают гуру в таких ситуациях Перемежают нулями и выполняют фильтрацию. Наличие артефактов означает неправильно посчитанный фильтр-интерполятор.
|
|
|
|
|
Nov 5 2010, 17:58
|

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

|
Цитата(des00 @ Nov 5 2010, 20:37)  модель в Simulink е в студию, спектр со скруглением RRC = 0.15, интерполяция ну положим на 16ть. Модель должна демонстрировать выходной спектр сигнала. Интерполятор возьмите любой. Нет модели, нет разговора. Вы про какие-то модели в Симулинке разговор начали - Вам и предъявлять. А я поправлю, если что. Поскольку Симулинком не пользовался сроду. Цитата(des00 @ Nov 5 2010, 20:37)  Вам хочется пофлудить, после длительного молчания, Что за чушь? Держите себя в рамках, уважаемый. Или за время моего отсутствия модераторы электроникса окончательно мутировали в попсу? Что ни тема - то россыпь перлов. И модераторы в "застрельщиках". Цитата(des00 @ Nov 5 2010, 20:37)  ...или вы сознательно не прочитали слова автора топика "Есть сигнал - результат НЧ фильтрации исходного сигнала с целью определить его постоянную составляющую. То есть полоса сигнала в общем то составляет доли Герца, но среднее значение (или нулевая гармоника) может варьироваться в довольно большом диапазоне." Итак, Вы утверждаете, что, совершив НЧ фильтрацию исходного ПЧ-сигнала, Автор темы получил полосу в доли герца, я правильно Вас понял? Цитата(thermit @ Nov 5 2010, 20:51)  Перемежают нулями и выполняют фильтрацию. Наличие артефактов означает неправильно посчитанный фильтр-интерполятор. Не то, чтобы неправильно, скорей всего... Тут условия не совсем понятны. Видимо, нужно получать результат сразу же по приходу первых отсчётов. А такое действо предполагает некую искусственную процедуру инициализации памяти фильтра - интерполятора.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 5 2010, 18:00
|
Гуру
     
Группа: Свой
Сообщений: 2 932
Регистрация: 13-10-06
Из: Уфа
Пользователь №: 21 290

|
Цитата(alexPec @ Nov 5 2010, 22:08)  А если не нулями 24 отсчета забивать, а собственно самим отсчетом? А потом также через ФНЧ. Т.е. не 14,0,0,0,0....18,0,0...20,0,0 а так: 14,14,14,14.......18,18,18.....20,20,20 В таком случае может понадобится доп. коррекция АЧХ. Обратная sin(x)/x Цитата(Stanislav @ Nov 5 2010, 22:36)  Понеслась нелёгкая, похоже... 
--------------------
"...Дьяволу ведомо многое не потому, что он- Дьявол, а потому, что он стар..."
|
|
|
|
|
Nov 5 2010, 18:49
|
Знающий
   
Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997

|
Цитата(jorikdima @ Nov 5 2010, 19:45)  Здравствуйте. Возник вопрос, который быть может, надуман, но хочется разобраться. Есть сигнал - результат НЧ фильтрации исходного сигнала с целью определить его постоянную составляющую. То есть полоса сигнала в общем то составляет доли Герца, но среднее значение (или нулевая гармоника) может варьироваться в довольно большом диапазоне. Частоту дискретизации этого сигнала нужно поднять в 25 раз, для чего требуется провести интерполяцию. В книжках прочитал, что делается это с помощью добавления нужного числа нулей между исходными отсчетами и пропусканием через ФНЧ для удаления размноженных гармоник. В принципе все работает, но появляются артефакты. Дело в том, что во всех книжках, где рассказывается про интерполяцию, нарисован сигнал с околонулевой постоянной составляющей, ну либо нулевая гармоника много меньше других гармоник в сигнале. И тут все прекрасно, добавляются нули, затем они сглаживаются ФНЧ. Но в случае когда, нулевая гармоника является преобладающей добавление в сигнал отсчетов, сильно отличающихся от текущего значения сигнала (а именно нулевые отсчеты) каждый раз вызывают всплеск на выходе фильтра, пропорциональный разнице между нулем и реальным значением сигнала и зависящим от ИХ фильтра. Этот всплеск у меня много больше шума исходного сигнала, являющейся собственно постоянным током и недопустим. Что делают гуру в таких ситуациях? У самого есть идея следующая. Не добавлять нулевых отсчетов и не ставить ФНЧ, а вписывать какой-нибудь полином, тот же сплайн, в реальные отсчеты сигнала, а затем, найдя коэффициенты сплайна, рассчитывать 24 значения между исходными выборками. Минус такого решения, что это не риал тайм, нужно дождаться следующего отсчета прежде чем получить 24 точки до него, но мне не страшно это. Справедливо ли решение или есть какие-то более мудрые действия? Спасибо. Только добавлять нули и фильтровать, как изначально правильно решил автор. Правильно подобранный фильтр все и решит. Полоса сигнала не может быть больше, чем Fs/2, то есть полоса фильтра должна быть ниже, но как можно ближе к Fs/2 (к исходной частоте дискретизации. А значит, фильтр (обязательно КИХ) должен быть крутой. Можно сделать интерполяцию в два захода (в пять и еще раз в пять раз). В этом случае фильтры будут в сумме короче. Для сравнения нужно профильтровать исходный сигнал на исходной частоте фильтром с такой же характеристикой и сравнивать уже этот сигнал с полученным после интерполяции. Совпадение должно быть хорошим.
|
|
|
|
|
Nov 5 2010, 19:09
|

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

|
Цитата(alexPec @ Nov 5 2010, 20:08)  А если не нулями 24 отсчета забивать, а собственно самим отсчетом? А потом также через ФНЧ. Т.е. не 14,0,0,0,0....18,0,0...20,0,0 а так: 14,14,14,14.......18,18,18.....20,20,20 На самом деле сейчас в качестве временного решения так и сделал. Но минусы этого дела я прочел в этойтеме, об этом тут и Designer56 говорит. Цитата(des00 @ Nov 5 2010, 20:27)  У автора проблема с обработкой сигнала на околонулевой ПЧ, то пусть рассмотрит вариант ухода на нормальную, пусть и низкую ПЧ. В ноль снесет уже в цифре, после интерполяции и демодуляции. Не совсем понял в какой цифре? Я и так в цифре все это делаю. Если вдруг остались непонятные моменты, давайте я еще обрисую картину, хотя вроде все важный моменты упомянул. Итоговая цель - получить ФВЧ, но особенность в том, что частота дискретизации на несколько порядков выше частоты среза. Для этого я исходный сигнал децимировал в 25 раз, не забыв предварительно про антиалиасинговый ФНЧ и далее применил еще один ФНЧ на нужную мне полосу. Так я выделил постоянную составляющую, но частота дискретизации этой составляющей стала в 25 раз ниже исходной. Хочу поднять ее обратно, чтобы эту постоянную составляющую вычесть из исходного сигнала, для этого реализую интерполятор. Все фильтры КИХ с линейной фазой. ФНЧ в интерполяторе рассчитан на полосу пропускания [0; fd] где fd это доли Герца, и частоту затухания Fs/(2 * 20) где Fs это исходная (большая) частота дискретизации, а 20 коэффициент интерполирования. Порядок фильра получился около 170! Так что полагаю довольно крутой. Проблема то все в том, что фильтр давит этот переходной процесс (в данном случае переходной процесс появляется всегда, в течении всего времени работы, а не только в начале) настолько насколько рассчитан, но вот ввиду того, что входной скачок (0 минус мой постоянный сигнал) величина много большая, чем допустимые искажения, то этого подавления недостаточно. Можно конечно еще заузить фильтр, но он итак весьма неслабого порядка.
|
|
|
|
|
Nov 5 2010, 19:24
|

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

|
Цитата(sup-sup @ Nov 5 2010, 21:49)  Только добавлять нули и фильтровать, как изначально правильно решил автор... Непонятно только, нафиг это нужно, если стоит задача определить постоянную составляющую... ЗЫ. Ах, простите, в аккурат сейчас же всё обрисовали. Теперь будем думать. Цитата(jorikdima @ Nov 5 2010, 22:09)  Итоговая цель - получить ФВЧ, но особенность в том, что частота дискретизации на несколько порядков выше частоты среза. Думаю, в данном случае можно попытаться обойтись без прореживания. Соорудив простейший адаптивный фильтр на частоте дискретизации. Разностное уравнение: Y(k)=a*X(k)+ (1-a)Y(k-1), где Y(k) - текущая оценка постоянной составляющей, X(k) - текущий входной отсчёт, Y(k-1) - оценка постоянной составляющей на предыдущем шаге, a - весьма малый коэффициент, определяющий динамику системы. Инициализировать оцениватель нужно так: Y(0)=X(0). Недостатком является необходимость применения повышенной разрядности вычислений, если есть желание получить несмещённую оценку, т.к, в этом случае, усекать разрядность X(k) нежелательно.
Сообщение отредактировал Stanislav - Nov 5 2010, 19:37
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 5 2010, 20:01
|
Знающий
   
Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997

|
Цитата(jorikdima @ Nov 5 2010, 22:09)  На самом деле сейчас в качестве временного решения так и сделал. Но минусы этого дела я прочел в этойтеме, об этом тут и Designer56 говорит. Проблема то все в том, что фильтр давит этот переходной процесс (в данном случае переходной процесс появляется всегда, в течении всего времени работы, а не только в начале) настолько насколько рассчитан, но вот ввиду того, что входной скачок (0 минус мой постоянный сигнал) величина много большая, чем допустимые искажения, то этого подавления недостаточно. Можно конечно еще заузить фильтр, но он итак весьма неслабого порядка. Если использована вся разрядность вычисления, то надо проверить на большей длине фильтра, необходимой для увеличения затухания вне полосы. Наверное, у Вас полезный сигнал на десятки дБ меньше постоянной составляющей. А нельзя ли вначале грубо вычесть основную часть постоянной составляющей, а потом дофильтровать?
|
|
|
|
|
Nov 5 2010, 20:16
|

тут может быть ваша реклама
    
Группа: Свой
Сообщений: 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, от этого постоянная составляющая не перестанет быть ей, единственное что наверное расчетная частота среза фильтра пострадает. Спасибо всем, буду думать над предложениями!
|
|
|
|
|
Nov 6 2010, 05:31
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(jorikdima @ Nov 5 2010, 13:09)  Итоговая цель - получить ФВЧ, но особенность в том, что частота дискретизации на несколько порядков выше частоты среза. Для этого я исходный сигнал децимировал в 25 раз, не забыв предварительно про антиалиасинговый ФНЧ и далее применил еще один ФНЧ на нужную мне полосу. Так я выделил постоянную составляющую, но частота дискретизации этой составляющей стала в 25 раз ниже исходной. Хочу поднять ее обратно, чтобы эту постоянную составляющую вычесть из исходного сигнала, для этого реализую интерполятор. в своих модемах, в качестве корректора постоянки, использую фильтр "памяти" канала для Transform Domain эквалайзеров, взятый из книг по адаптивной фильтрации. Суть в слудующем : Вычисляем постоянку как y = (1/2^a)*x + (1-1/2^a)*y, a - однозначно определяет полосу, затем, без каких либо преобразований частот вычитаем постоянку из сигнала. Много позже нашел описание такого подхода на freepatents %) Минусы данного подхода большое время переходного процесса, но при работе линейных модемов это не сильно актуально. Зато метод простой и весит копейки.
--------------------
|
|
|
|
|
Nov 6 2010, 11:06
|

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

|
Цитата(jorikdima @ Nov 5 2010, 23:16)  С разрядностью проблем нет, все работает на ПК с использованием double либо single. Буду думать. А не будет проблем в применении тут БИХ фильтра? Я вот не соображу требование линейности фазы при удалении постоянной составляющей необходимо?
Да, полезный сигнал действительно может быть децибел на 80 по амплитуде меньше постоянной составляющей. Насчет грубого вычитания как раз и думал в первую очередь. С другой стороны, чем плоха вставка не нулей, а предыдущих значений в моем случае... ну и пусть АЧХ сигнала с постоянной составляющей будет с дополнительным подавлением sin(x)/x, от этого постоянная составляющая не перестанет быть ей, единственное что наверное расчетная частота среза фильтра пострадает. Простите, но мне не совсем понятен Ваш подход. Плясать нужно от определений. Зачем Вам какая-то децимация, если нужно найти оценку постоянной составляющей (сиречь, матожидания - МО) сигнала? Если волнует проблема нелинейности фазы БИХ-фильтра, соорудите КИХ-фильтр на частоте дискретизации. Оптимальным в смысле СКО оценки МО на заданной последовательности длины N является просто усреднение её элементов, которому в случае непрерывного поступающих отсчётов соответствует фильтр скользящего среднего длины N. =1/N*(X(k)+X(k-1)+...+X(k-N+1))) (1) Инициализировать память такого фильтра можно значением X(0) - переходный процесс при этом будет существенно уменьшен. Можно придумать и более "продвинутые" способы, обеспечивающие лучшую сходимость к оптимальному значению. Такой фильтр не содержит умножений при накоплении, а если выбрать N равным степени двойки, операция умножения на коэффициент 1/N реализуется при помощи сдвига с округлением. Если требуемая длина фильтра получается большой, количество операций в нём можно радикально изменить, преобразовав его в рекурсивный вид. Для этого, положим =1/N*(X(k)-X(k-N)+Y(k-1)) (2) Убедиться в эквивалентности (1) и (2) могут все желающие.  Фильтр содержит только 3 операции сложения/вычитания и одну операцию сдвига (умножения на к-т) на отсчёт, и это количество не зависит от его длины! Промежуточный результат накопления Y(n) должен содержаться в регистре повышенной разрядности, дабы получить несмещённую оценку. Способ инициализации такого фильтра попробуйте предложить сами.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 6 2010, 13:37
|

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

|
Цитата(Stanislav @ Nov 6 2010, 14:06)  Простите, но мне не совсем понятен Ваш подход. Плясать нужно от определений. Зачем Вам какая-то децимация, если нужно найти оценку постоянной составляющей (сиречь, матожидания - МО) сигнала? Если волнует проблема нелинейности фазы БИХ-фильтра, соорудите КИХ-фильтр на частоте дискретизации. Если рассчитать КИХ фильтр на частоте дискретизации (это, понятно, первая мысль, которая приходит в голову), то его порядок получается что-то вроде 4000-5000, если память не изменяет. Это потому что отношение частоты среза к частоте дискретизации 10^-4
|
|
|
|
|
Nov 6 2010, 19:59
|
Местный
  
Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066

|
Цитата(Stanislav @ Nov 6 2010, 16:45)  Ваши сомнения мне непонятны... Если память позволяет, пуркуа бы и не па? Рассчитывать там особенно ничего не надо: все коэффициенты равны 1 или -1. Проще пареной репы, да ещё и оптимально к тому же...  Фильтр скользящего усреднения со всеми единичными коэффициентами имеет довольно паршивую АЧХ в области пропускания и, особенно, в области подавления: первый лепесток АЧХ всего лишь 1/5 от основного, да и остальные весьма хреново спадают. Ситуация с подавлением улучшается последовательным включением нескольких таких фильтров, но опять таки, это очень далеко по характеристикам от оптимального фильтра, хотя и требует гораздо меньше вычислений. Что касается основного вопроса автора, то, как уже было замечено, Вы, скорее всего где-то ошибаетесь. Возможно у Вас слишком короткий фильтр, или же неправильно выбрана задержка сигнала. Есть еще один момент: если Вы хотите обеспечить подавление низких частот на уровне 80дБ, то все ФНЧ в дециматоре и интерполяторе должны иметь пульсации в области пропускания такого же порядка! К подавлению требования наверно еще более жесткие. В прикрепленном файле простейшая модель для Simulinkа, только я немного уменьшил Ваши требования к соотношению частот среза и дискретизации: Fd = 1MHz, Fpass = 500Hz, Fstop = 1500Hz. На картинке результат моделирования:
|
|
|
|
|
Nov 7 2010, 00:39
|

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

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

Местный
  
Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347

|
1. Если надо оценить постоянную составляющую то надо делать фильтр скользящего среднего. Доказано что такой фильтр дает состоятельную несмещенную оценку постоянной составляющей, причем тем оценка точнее, чем фильтр длинее. Если ваша постоянка не меняется во времени (ваш процесс стационарен), то можно реализовать просто интегратор, который будет выдавать постоянную составляющую умноженную на интервал интегрирования. Реализовать фильтр интегратор очень просто.
2. Если ваша постоянка меняется во времени, значит ваш процесс нестационарен и в этом случае принято определять интервал стационарности сигнала, который и будет задавать длину фильтра скользящего среднего. Говорить о состоятельности и несмещенности оценки в этом случае не приходится.
3. Если вам надо вырезать какую-то часть спектра вблизи нуля, то для этого необходимо ставить фвч. При этом частота среза вашего цифрового ФВЧ будет зависеть от полосы вблизи нуля и частоты дискретизации. Если скажем вы хотите на частоте дискретизации 1 МГц отфильтровать все что ниже 1 Гц, то вам потребуется FIR фильтр ОЧЕНЬ большого порядка. IIR в этом случае вообще может быть неустойчив даже при 32 битном представлении с плавующей точкой. Это обусловленно самым фундаментальным принципом - принципом неопределенности и ни один смертный ничего не может с этим поделать.
Если я правильно понял, то частота дискретизации много больше условно верхней частоты сигнала. Поэтому чтобы реализовать нормальную фильтрацию надо децимировать. Это нормально. Мне не ясно зачем потом обратно интерполировать? Если сумели снизить частоту дискретизации ничего существенного не потеряв зачем обратно то задирать? Обрабатывайте дальше на пониженной частоте все алгоритмы будут работать с той же точностью, только быстрее.
4. Не понятрно, почему вы боитесь исказить фазу IIR фильтром? если у вас нулевая пч то ставьте один и тотже IIR на I и на Q и наслаждайтесь. Никакие характеристики вы не потеряете, потому что разность фаз квадратурных каналов в останется неизменной.
|
|
|
|
|
Nov 7 2010, 12:51
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(bahurin @ Nov 7 2010, 15:23)  1. Если надо оценить постоянную составляющую то надо делать фильтр скользящего среднего. .... Все правильно. Только хочется заметить, что никаких магических универсальных формул не бывает. Без априорной информации об "истинном" сигнале любые фильтры не имеют смысла. Вот имеются "измерения" в какие-то моменты времени. Без дополнительных знаний или предположений они и являются сигналом. А если я предполагаю, что должна быть линейная функция, то должна провести прямую (линейная аппроксимация) максимально близко к этим точкам. Или другой функцией приблизить. Тут еще нужно знать, какова ошибка "измерений". Вот пусть есть 4 точки - (0, 0), (1, 1), (100, 1) (101, 0). Можно приблизить квадратичной функцией... А, может, это горизонтальная прямая? Извините за банальности.
|
|
|
|
|
Nov 7 2010, 13:04
|

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

|
Цитата(bahurin @ Nov 7 2010, 15:23)  3. Если вам надо вырезать какую-то часть спектра вблизи нуля, то для этого необходимо ставить фвч. При этом частота среза вашего цифрового ФВЧ будет зависеть от полосы вблизи нуля и частоты дискретизации. Если скажем вы хотите на частоте дискретизации 1 МГц отфильтровать все что ниже 1 Гц, то вам потребуется FIR фильтр ОЧЕНЬ большого порядка. IIR в этом случае вообще может быть неустойчив даже при 32 битном представлении с плавующей точкой. Это обусловленно самым фундаментальным принципом - принципом неопределенности и ни один смертный ничего не может с этим поделать. Да, скорее этот вариант Цитата(bahurin @ Nov 7 2010, 15:23)  Если я правильно понял, то частота дискретизации много больше условно верхней частоты сигнала. Поэтому чтобы реализовать нормальную фильтрацию надо децимировать. Это нормально. Мне не ясно зачем потом обратно интерполировать? Если сумели снизить частоту дискретизации ничего существенного не потеряв зачем обратно то задирать? Обрабатывайте дальше на пониженной частоте все алгоритмы будут работать с той же точностью, только быстрее. Интерполировать, чтобы из сигнала с большой частотой дискретизации вычесть постоянную составляющую. Следовательно они должны идти с одним самплинг рэйтом, а именно тем, который выше.
|
|
|
|
|
Nov 7 2010, 13:22
|

Местный
  
Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347

|
Цитата(Tanya @ Nov 7 2010, 15:51)  Все правильно. Только хочется заметить, что никаких магических универсальных формул не бывает. Без априорной информации об "истинном" сигнале любые фильтры не имеют смысла. Вот имеются "измерения" в какие-то моменты времени. Без дополнительных знаний или предположений они и являются сигналом. А если я предполагаю, что должна быть линейная функция, то должна провести прямую (линейная аппроксимация) максимально близко к этим точкам. Или другой функцией приблизить. Тут еще нужно знать, какова ошибка "измерений". Вот пусть есть 4 точки - (0, 0), (1, 1), (100, 1) (101, 0). Можно приблизить квадратичной функцией... А, может, это горизонтальная прямая? Извините за банальности. предлагаю не давить интеллектом, ибо вопрос и топик собственно не о том, что считать истиным сигналом и какая априорная инфа используется. К тому же фильтр (скажем верхних частот) вобщем-то совершенно достаточная вещь, которая расчитывается и реализуется без использования априорной информации о сигнале. Я например могу расчитать цифровой эллиптический ФВЧ с заданной частотой среза, подавлением в полосе заграждения и неравномерностью в полосе пропускания. И я могу реализовать этот фильтр программно и он будет фильтровать все сигналы одинаково подавляя сигнал в полосе заграждения и одинаково искажая их в полосе пропускания. И по правде сказать этому фильтру будет совершенно безразлично что на входе истинный сигнал или фальшивый. А вообще предположение о том что ваш случайный процесс - стационарный и эргодический достаточные априорные допущения чтобы применять фильтр скользящего среднего. Эти допущения взяты не с потолка, а исходя из закона больших чисел, который говорит, что сумма большого числа любых процессов всегда стремиться к гауссову процессу, который стационарен. Приведенный пример с 4-мя точками это не банальность, это очень короткая выборка, по которой определить статистические характеристики можно лишь очень приблеженно. Возьмите еще 400 точек, а лучше 4000 и тогда статистическими методами вы определите как лучше приближать параболой или линией. Кроме того чем больше у вас будет точек, тем лучше вы проведете это линию или параболу, по заданному критерию (как правило минимума СКО).
|
|
|
|
|
Nov 7 2010, 13:24
|
Знающий
   
Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997

|
Цитата(bahurin @ Nov 7 2010, 15:23)  1. Если надо оценить постоянную составляющую то надо делать фильтр скользящего среднего... 2. Если ваша постоянка меняется во времени, значит ваш процесс нестационарен и в этом случае принято определять интервал стационарности сигнала, который и будет задавать длину фильтра скользящего среднего. Говорить о состоятельности и несмещенности оценки в этом случае не приходится. 3. Если вам надо вырезать какую-то часть спектра вблизи нуля, то для этого необходимо ставить фвч. При этом частота среза вашего цифрового ФВЧ будет зависеть от полосы вблизи нуля и частоты дискретизации. Если скажем вы хотите на частоте дискретизации 1 МГц отфильтровать все что ниже 1 Гц, то вам потребуется FIR фильтр ОЧЕНЬ большого порядка. IIR в этом случае вообще может быть неустойчив даже при 32 битном представлении с плавующей точкой. Это обусловленно самым фундаментальным принципом - принципом неопределенности и ни один смертный ничего не может с этим поделать. Если я правильно понял, то частота дискретизации много больше условно верхней частоты сигнала. Поэтому чтобы реализовать нормальную фильтрацию надо децимировать. Это нормально. Мне не ясно зачем потом обратно интерполировать? Если сумели снизить частоту дискретизации ничего существенного не потеряв зачем обратно то задирать? Обрабатывайте дальше на пониженной частоте все алгоритмы будут работать с той же точностью, только быстрее. 4. Не понятрно, почему вы боитесь исказить фазу IIR фильтром? если у вас нулевая пч то ставьте один и тотже IIR на I и на Q и наслаждайтесь. Никакие характеристики вы не потеряете, потому что разность фаз квадратурных каналов в останется неизменной. 1. FIR с прямоугольным окном (скользящее среднее) заведомо хуже, а фильтр длиннее, чем FIR с окном, расчитанным под задачу. 2. Если бы не было проблем, автор сразу бы решил просто вычесть грубо постоянку и резко уменьшить таким образом динамический диапазон. Возможно, постоянка - это низкочастотный шум, диапазон которого гораздо больше сигнала и по каким-то причинам его нельзя убрать до оцифровки. Возможно, это полезный сигнал для другой части устройства. Можно погадать. В этом случае лучшее решение - нормально расчитанный FIR (я бы взял подходящее окно, например Гаусса и подобрал подходящий коэффициент и длину под затухание вне полосы. 3. Автор сказал, что постоянку надо вернуть с помощью интерполяции на исходную частоту чтобы вычесть ее из сигнала. То есть, такой способ реализации фильтра высоких частот. 4. Тут я не понял. А раз так, что применил бы FIR c которым не должно быть проблем.
|
|
|
|
|
Nov 7 2010, 13:37
|

Местный
  
Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347

|
Цитата(jorikdima @ Nov 7 2010, 16:04)  Да, скорее этот вариант
Интерполировать, чтобы из сигнала с большой частотой дискретизации вычесть постоянную составляющую. Следовательно они должны идти с одним самплинг рэйтом, а именно тем, который выше. Если вы поставите ФВЧ то вам не придется ничего вычитать. Ваша постоянка будет подавлена ФВЧ. Если вы поставите ФВЧ после децимации, то ФВЧ будет меньшего порядка, т.к. частота дискретизации ниже. И всю дальнейшую обработку можно вести после децимации и соотвественно фильтрации ФВЧ без интерполяции и прочих прелестей жизни. Только надо децимировать правильно чтобы не потерять полезный сигнал. Цитата(sup-sup @ Nov 7 2010, 16:24)  1. FIR с прямоугольным окном (скользящее среднее) заведомо хуже, а фильтр длиннее, чем FIR с окном, расчитанным под задачу. фильтр скользящего среднего обеспечивает несмещенную состоятельную оценку мат. ожидания. читайте матчасть. Цитата(sup-sup @ Nov 7 2010, 16:24)  2. Если бы не было проблем, автор сразу бы решил просто вычесть грубо постоянку и резко уменьшить таким образом динамический диапазон. Возможно, постоянка - это низкочастотный шум, диапазон которого гораздо больше сигнала и по каким-то причинам его нельзя убрать до оцифровки. Возможно, это полезный сигнал для другой части устройства. Можно погадать. В этом случае лучшее решение - нормально расчитанный FIR (я бы взял подходящее окно, например Гаусса и подобрал подходящий коэффициент и длину под затухание вне полосы. 3. Автор сказал, что постоянку надо вернуть с помощью интерполяции на исходную частоту чтобы вычесть ее из сигнала. То есть, такой способ реализации фильтра высоких частот. Еще раз повторяю. Капитан очевидность утверждает что убирать постоянную составляющую надо фильтром верхних частот. В технике для устранения постоянной составляющей ставят емкость, а не вычитатель. Убирать постоянку вычитанием крайне неэффективно. ПРичем с интерполяцией дейимацией и прочего. Цитата(sup-sup @ Nov 7 2010, 16:24)  4. Тут я не понял. А раз так, что применил бы FIR c которым не должно быть проблем. поясняю пропускание через IIR фильтр добавляет к синфазной и квадратурному каналам одинаковую фазовую добавку exp(j*Ф(w)), которая не повлияет на амплитудную огибающую и скомпенсируется при вычислении фазовой огибающей при делении atan(Q(t)/I(t)).
|
|
|
|
|
Nov 7 2010, 13:39
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(bahurin @ Nov 7 2010, 16:22)  Приведенный пример с 4-мя точками это не банальность, это очень короткая выборка, по которой определить статистические характеристики можно лишь очень приблеженно. Возьмите еще 400 точек, а лучше 4000 и тогда статистическими методами вы определите как лучше приближать параболой или линией. Кроме того чем больше у вас будет точек, тем лучше вы проведете это линию или параболу, по заданному критерию (как правило минимума СКО). А если я знаю (априорно), что погрешность измерения одна тысячная? Зачем мне статистикой убивать? Или ее набирать... А если больше нет точек? Вот представьте... Сейсмограф... Землятресение... Отфильтруем - и нет его. А по поводу скользящего среднего... Почему бы не ввести весовую функцию... Горбик... Или что-нибудь иное... А чтобы выбрать частоту среза и нужна априорная информация. Короче говоря, нужна модель процесса...
|
|
|
|
|
Nov 7 2010, 13:57
|

Местный
  
Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347

|
Цитата(Tanya @ Nov 7 2010, 16:39)  А если я знаю (априорно), что погрешность измерения одна тысячная? Зачем мне статистикой убивать? Или ее набирать... Значит или вы уже проделали априорно этот статистический эксперимент или вы - господь бог с чем собсна я вас и поздравляю. Цитата(Tanya @ Nov 7 2010, 16:39)  А если больше нет точек? Вот представьте... Сейсмограф... Землятресение... Отфильтруем - и нет его. тогда вы можете принять эти 4 точки за параболу и всей душой поверить в это. Но к сожалению вероятность того что это парабола будет оч. низкой согласно критериям согласия. И пока вы не наберете 400 или 4000 точек вы никому не докажете что это парабола хотябы с вероятностью 90%. Я могу ошибаться но по-моему нормлаьное землетрясение проявляется не 4-я точками на сейсмографе. Короче хорошее землятресение так просто не отфильтруешь. Цитата(Tanya @ Nov 7 2010, 16:39)  А по поводу скользящего среднего... Почему бы не ввести весовую функцию... Горбик... Или что-нибудь иное... Да на здоровье. Это не возбраняется. Только оценка мат ожидания в этом случает будет иметь большее СКО чем при прямоугольном окне, при стационарном СП. При нестационарном оконное взвешивание дает лучшие характериситики. Цитата(Tanya @ Nov 7 2010, 16:39)  А чтобы выбрать частоту среза и нужна априорная информация. Короче говоря, нужна модель процесса... Ну модель - не модель, но чтото надо такое знать это безусловно. В данном случае я так понимаю эта информация есть.
Сообщение отредактировал bahurin - Nov 7 2010, 13:58
|
|
|
|
|
Nov 7 2010, 14:05
|
Знающий
   
Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997

|
Цитата(bahurin @ Nov 7 2010, 17:37)  1. фильтр скользящего среднего обеспечивает несмещенную состоятельную оценку мат. ожидания. читайте матчасть... 2. Еще раз повторяю. Капитан очевидность утверждает что убирать постоянную составляющую надо фильтром верхних частот. В технике для устранения постоянной составляющей ставят емкость, а не вычитатель. Убирать постоянку вычитанием крайне неэффективно. ПРичем с интерполяцией дейимацией и прочего. 3. поясняю пропускание через IIR фильтр добавляет к синфазной и квадратурному каналам одинаковую фазовую добавку exp(j*Ф(w)), которая не повлияет на амплитудную огибающую и скомпенсируется при вычислении фазовой огибающей при делении atan(Q(t)/I(t)). 1. Скользящее среднее имеет частотку sin(x)/x. И это значительно хуже того, что можно получить фильтром с другим окном. По-другому, при очередном сдвиге фильтра с прямоугольным окном из него выпадает и в него попадает попадает полный сэмпл, а в фильтре с неприподнятым окном только очень маленькая его часть, что и приводит к лучшей частотке. В конце концов, любой FIR можно назвать фильтром скользящего среднего., тогда да. Еще, можно поставить подряд несколько одинаковых скользящих фильтров с прямоугольным окном и получим в пределе гауссовское. 2. В конце концов и получится ФВЧ. Если при такой 'неправильной' организации на него уйдет меньше ресурса, то и нормально. 3. Так тут вроде нет действительной и мнимой частей. А IIR на подозрении, так как кажется лучше, чтобы фазовая была линейна, чтобы при вычитании не нарушилось ничего. Все-таки 80 дБ.
Сообщение отредактировал sup-sup - Nov 7 2010, 14:07
|
|
|
|
|
Nov 7 2010, 14:48
|

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

|
Цитата(bahurin @ Nov 7 2010, 16:37)  Если вы поставите ФВЧ то вам не придется ничего вычитать. Ваша постоянка будет подавлена ФВЧ. Если вы поставите ФВЧ после децимации, то ФВЧ будет меньшего порядка, т.к. частота дискретизации ниже. И всю дальнейшую обработку можно вести после децимации и соотвественно фильтрации ФВЧ без интерполяции и прочих прелестей жизни. Только надо децимировать правильно чтобы не потерять полезный сигнал. Я уже писал, что расчет ФВЧ на исходной частоте дает огромный порядок фильтра из-за большой разницы частоты среза и дискретизации. Ставить ФВЧ после децимации нельзя, ибо децимация даже в 3-4 раза убьет полезный сигнал. Цитата(bahurin @ Nov 7 2010, 16:37)  Еще раз повторяю. Капитан очевидность утверждает что убирать постоянную составляющую надо фильтром верхних частот. В технике для устранения постоянной составляющей ставят емкость, а не вычитатель. Убирать постоянку вычитанием крайне неэффективно. ПРичем с интерполяцией дейимацией и прочего. Не соглашусь с капитаном. ФВЧ и ФНЧ дуальны, используя ФНЧ можно вычитанием получить ФВЧ, почему нет. И в моем случае не эффективно именно не использовать децимацию. Цитата(bahurin @ Nov 7 2010, 16:37)  поясняю пропускание через IIR фильтр добавляет к синфазной и квадратурному каналам одинаковую фазовую добавку exp(j*Ф(w)), которая не повлияет на амплитудную огибающую и скомпенсируется при вычислении фазовой огибающей при делении atan(Q(t)/I(t)). Я не работаю с квадратурами, работаю с обычным вещественным одномерным сигналом.
|
|
|
|
|
Nov 7 2010, 14:56
|

Местный
  
Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347

|
Цитата(sup-sup @ Nov 7 2010, 17:05)  1. Скользящее среднее имеет частотку sin(x)/x. И это значительно хуже того, что можно получить фильтром с другим окном. По-другому, при очередном сдвиге фильтра с прямоугольным окном из него выпадает и в него попадает попадает полный сэмпл, а в фильтре с неприподнятым окном только очень маленькая его часть, что и приводит к лучшей частотке. В конце концов, любой FIR можно назвать фильтром скользящего среднего., тогда да. Еще, можно поставить подряд несколько одинаковых скользящих фильтров с прямоугольным окном и получим в пределе гауссовское. 2. В конце концов и получится ФВЧ. Если при такой 'неправильной' организации на него уйдет меньше ресурса, то и нормально. 3. Так тут вроде нет действительной и мнимой частей. А IIR на подозрении, так как кажется лучше, чтобы фазовая была линейна, чтобы при вычитании не нарушилось ничего. Все-таки 80 дБ. 1. А с чего вы взяли, что на точность оценки мат ожидания оказывает влияние АЧХ вашего скользящего окна? вот вам пример из матлаба который говорит о том что использование окна хэмминга при оценки матожидания увеличивает СКО оценки Код N = 10000; %длина исходного сигнала L = 100; %длина фильтра s = randn(1,N)+1; % исходный СП с матожиданием равным 1
h = ones(1,L)/L; %прямоуглольное скользящее окно w = hamming(L); %скользящее окно хемминга w = w/sum(w); %нормирую окно хемминга чтобы сумма равна была 1 для точного определения мат ожидания
sh = filter(h,1,s); %фильтрую скользящим среднем с прямоугольным окном sw = filter(w,1,s); %фильтрую скользящим среднем с окном хэмминга
stdh = std(sh(L:N)) %СКО на выходе прямоугольного окна беру без первых L элементов чтобы устранить переходной процесс stdw = std(sw(L:N)) %СКО на выходе окна хэмминга беру без первых L элементов чтобы устранить переходной процесс
plot(1:N,sh,1:N,sw) % графики при этом получаем СКО оценки мат ожидания прямоугольным окном stdh = 0.0952, а окном хэмминга stdw = 0.11. Видно что СКО оценки при окне хэмминга БОЛЬШЕ. 2. вряд ли с интерполяцией и т.д. на него уйдет меньше ресурсов. Цитата(jorikdima @ Nov 7 2010, 17:48)  Не соглашусь с капитаном. ФВЧ и ФНЧ дуальны, используя ФНЧ можно вычитанием получить ФВЧ, почему нет. И в моем случае не эффективно именно не использовать децимацию. Категорически не согласен. Если речь идет о FIR (КИХ) фильтре с линейной фазой, то еще может после некоторых танцев с бубнами путем утсранения задержки вы получите что-то похожее на ФВЧ. Но если возьмете IIR фильтр (баттерворта, чебышева или кауэра), то тут у вас точно вычитанием результата как на выходе ФВЧ не получится никогда.
|
|
|
|
|
Nov 7 2010, 15:11
|
Знающий
   
Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997

|
Не могу быстро ответить про Матлабовский пример. Как я понял, там взят белый шум. Реально () есть низкочастотная составляющая, которую надо убрать. Мне понятнее это представлять как фильтр. В этом случае, требуемое затухание нужно около 100 дБ. Это решение легко проверить. Нужна только реальная выборка. Автор, наверное, имеет и проверит, что посчитает нужным. Насчет бубна, так нет, применяя FIR можно и без бубна. Задержка конкретная, которую с точность до сэмпла надо учесть при вычитании.
|
|
|
|
|
Nov 7 2010, 15:49
|

Местный
  
Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347

|
Цитата(sup-sup @ Nov 7 2010, 18:11)  Не могу быстро ответить про Матлабовский пример. Как я понял, там взят белый шум. Реально () есть низкочастотная составляющая, которую надо убрать. Мне понятнее это представлять как фильтр. В этом случае, требуемое затухание нужно около 100 дБ. Это решение легко проверить. Нужна только реальная выборка. Автор, наверное, имеет и проверит, что посчитает нужным. Насчет бубна, так нет, применяя FIR можно и без бубна. Задержка конкретная, которую с точность до сэмпла надо учесть при вычитании. Вот теперь я попробую вам донести свою мысль. Так вот если вы хотите оценить мат ожидание, то прямоугольное скользящее окно является лучшим выбором. И хотя в частотной области характеристика sin(x)/x, но СКО оценки мат ожидания на выходе прямоугольного окна будет меньше, чем при использовании любого другого окна. Почему? все просто. Для того чтобы оценка матожидания была несмещенной, сумма всех отсчетов вашего окна должна быть равна 1. Я вводил нормировку в эксперименте когда взял окно хэмминга. При этом в прямоугольном окне все значения равны 1/L, а в окне хемминга в центре будут занчения большие чем 1/L. При скольжении окна на пути скольжения появляются выбросы и если эти выбросы в прямоугольном окне размазываются равномерно, то в окне хемминга они сильно давятся на краях окна. НО окно то скользит, и рано или поздно выброс попадет в центр окна, и будет усреднен не по всему окну, а только в середке (где горбик), потому что края вносят малый вес. А еще в середке большой выброс будет умножен не на 1/L, а на значение больше чем 1/L. так что большой выброс будет подавлен окном с горбиком хуже чем прямоугольным окном. А поскольку из таких выбросов состоит весь процесс, то получается, что окно хэмминга (как и любое другое окно) будет давать СКО оценки мат ожидания больше чем прямоугольное. Именно это я имел ввиду когда посылал вас читать матчасть. Правда в стат радиотехнике это все доказывается достаточно строго. Если это рабоче-крестьянское объяснение вас не устроит, я умываю руки. Теперь если вы хотите оперировать понятием фильтра, то постоянную составляющую устраняет не вычитатель матожидания, а фильтр верхних частот. По сути вычитатель выполняет функции что и ФВЧ, но требует оценки этого самого матожидания, в отличии от ФВЧ, который как я уже писал выше вещь довольно самодостаточная и никакой информации о сигнале не требующая. В этом смысле используя ФВЧ вы гарантируете заданный уровень подавления вблизи нуля для любого сигнала, в отличии от вашей выдумки про вычитатель, когда интервал стационарности СП на входе может стать короче вашего окна оценки этого матожидания и вся ваша выдумка перестает работать. Вам лишь надо найти компромис между порядком фильтра, частотой дискретизации, полосой заграждения фильтра и переходной полосой. чтобы фильтр был реализуем и устойчив. Это уже задача в большей степени организационная нежили техническая, поскольку таким образом от характериситк входного сигнала вы по сути отвязались. Если у вас требуемый уровень подавления 100 дБ, то для вычитателя вам потребуется оценить постоянку с точностью 0.0000000001, что потребует минимум 100 000 000 000 отсчетов.
Сообщение отредактировал bahurin - Nov 7 2010, 15:53
|
|
|
|
|
Nov 7 2010, 16:17
|
Местный
  
Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066

|
Цитата(bahurin @ Nov 7 2010, 17:56)  >Цитата(sup-sup @ Nov 7 2010, 17:05) >2. В конце концов и получится ФВЧ. Если при такой 'неправильной' >организации на него уйдет меньше ресурса, то и нормально. ... 2. вряд ли с интерполяцией и т.д. на него уйдет меньше ресурсов. ... С интерполяцией и т.д. ресурсов на фильтр требуется реально меньше чем при прямой реализации. Причем меньше на порядки. Взять хотя бы пример, приведенный мной выше: эквивалентная "АЧХ" всех ФНЧ фильтров в дециматоре и интерполяторе имеет затухание 110дБ на частоте 1.5кГц, частота среза 500Гц и неравномерность в полосе пропускания +-3*10^-5 дБ. Частота дискретизации 1МГц. Все фильтры суммарно имеют вычислительную сложность примерно в 83*10^6 умножений/сек. (без учета симметрии, полифазной реализации и всего остального). Эквивалентный по характеристикам ФНЧ реализованный "в лоб" на одной частоте 1МГц имеет порядок примерно 6700 и потребует для реализации 6.7*10^9 умножений/сек, т.е. минимум в 80 раз больше.
|
|
|
|
|
Nov 7 2010, 18:07
|
Знающий
   
Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997

|
Цитата(bahurin @ Nov 7 2010, 19:49)  Вот теперь я попробую вам донести свою мысль. Так вот если вы хотите оценить мат ожидание, то прямоугольное скользящее окно является лучшим выбором. И хотя в частотной области характеристика sin(x)/x, но СКО оценки мат ожидания на выходе прямоугольного окна будет меньше, чем при использовании любого другого окна. Почему? все просто. Для того чтобы оценка матожидания была несмещенной, сумма всех отсчетов вашего окна должна быть равна 1. Я вводил нормировку в эксперименте когда взял окно хэмминга. При этом в прямоугольном окне все значения равны 1/L, а в окне хемминга в центре будут занчения большие чем 1/L. При скольжении окна на пути скольжения появляются выбросы и если эти выбросы в прямоугольном окне размазываются равномерно, то в окне хемминга они сильно давятся на краях окна. НО окно то скользит, и рано или поздно выброс попадет в центр окна, и будет усреднен не по всему окну, а только в середке (где горбик), потому что края вносят малый вес. А еще в середке большой выброс будет умножен не на 1/L, а на значение больше чем 1/L. так что большой выброс будет подавлен окном с горбиком хуже чем прямоугольным окном. А поскольку из таких выбросов состоит весь процесс, то получается, что окно хэмминга (как и любое другое окно) будет давать СКО оценки мат ожидания больше чем прямоугольное. Именно это я имел ввиду когда посылал вас читать матчасть. Правда в стат радиотехнике это все доказывается достаточно строго. Если это рабоче-крестьянское объяснение вас не устроит, я умываю руки. Теперь если вы хотите оперировать понятием фильтра, то постоянную составляющую устраняет не вычитатель матожидания, а фильтр верхних частот. По сути вычитатель выполняет функции что и ФВЧ, но требует оценки этого самого матожидания, в отличии от ФВЧ, который как я уже писал выше вещь довольно самодостаточная и никакой информации о сигнале не требующая. В этом смысле используя ФВЧ вы гарантируете заданный уровень подавления вблизи нуля для любого сигнала, в отличии от вашей выдумки про вычитатель, когда интервал стационарности СП на входе может стать короче вашего окна оценки этого матожидания и вся ваша выдумка перестает работать. Вам лишь надо найти компромис между порядком фильтра, частотой дискретизации, полосой заграждения фильтра и переходной полосой. чтобы фильтр был реализуем и устойчив. Это уже задача в большей степени организационная нежили техническая, поскольку таким образом от характериситк входного сигнала вы по сути отвязались. Если у вас требуемый уровень подавления 100 дБ, то для вычитателя вам потребуется оценить постоянку с точностью 0.0000000001, что потребует минимум 100 000 000 000 отсчетов. Я думаю, что применение матожидания и дисперсии и белого шума несколько отдалена от анализа реального сигнала. Вы, кстати, упоминали, что для нестационарного процесса это не так. Все решит обработка реальной выборки сигнала, которой у нас нет. Насчет реализации ФВЧ, это все равно как его делать и как назвать, лишь бы правильно работало. Как сказал классик - 'не важно, чтобы это было научно, нужно чтобы было верно'. В конце концов реализация с вычитанием вполне классическая, если это требуется. А децибеллы здесь по напряжению, так что всего 0.00001.
|
|
|
|
|
Nov 8 2010, 05:10
|

Местный
  
Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347

|
Цитата(sup-sup @ Nov 7 2010, 21:07)  Как сказал классик - 'не важно, чтобы это было научно, нужно чтобы было верно'. Вот с этим я никогда не соглашусь. ибо раньше говорили что «Учение Маркса всесильно, потому что оно верно!», а еще раньше утверждали что земля плоская и стоит на трех китах, и считали, что это верно, и кроме того, любого кто так не считал сжигали на костре только потому что это верно. И только наука расставляет критерии того что верно и что неверно. И критерии эти вполне конкретны. Самое важное что отличает науку от всех остальных догм - эксперимент и его повтрояемость. Вы 1000 раз можете подбрасывать мячик и он 1000 раз упадет на землю. Это наука. Точно также вы можете перепробывать 1000 различных окон, но СКО оценки матожидания у всех них будет выше, чем у прямоугольного окна, для стационарного СП хотя вы можете считать что это неверно. И как только вы отказываетесь от научности вы погружаетесь во мглу в которой нет ориентиров. Удачи.
|
|
|
|
|
Nov 8 2010, 05:59
|
Знающий
   
Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997

|
Цитата(bahurin @ Nov 8 2010, 08:10)  Вот с этим я никогда не соглашусь. ибо раньше говорили что «Учение Маркса всесильно, потому что оно верно!», а еще раньше утверждали что земля плоская и стоит на трех китах, и считали, что это верно, и кроме того, любого кто так не считал сжигали на костре только потому что это верно. И только наука расставляет критерии того что верно и что неверно. И критерии эти вполне конкретны. Самое важное что отличает науку от всех остальных догм - эксперимент и его повтрояемость. Вы 1000 раз можете подбрасывать мячик и он 1000 раз упадет на землю. Это наука. Точно также вы можете перепробывать 1000 различных окон, но СКО оценки матожидания у всех них будет выше, чем у прямоугольного окна, для стационарного СП хотя вы можете считать что это неверно. И как только вы отказываетесь от научности вы погружаетесь во мглу в которой нет ориентиров. Удачи. Не отказываюсь. Грызу. Со стационарным процессом все понял, прямоугольное лучше. Но реально работая с сигналами, никогда не видел белого шума. А небольшая узкополосная помеха сразу делает гладкое окно более выгодным.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|