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

 
 
 
Reply to this topicStart new topic
> Секционированная свертка
#Andre
сообщение Mar 9 2009, 20:44
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 9-03-09
Пользователь №: 45 874



Здравствуйте! Если кто сталкивался - помогите. Задача: ПОТОКОВАЯ обработка сигнала длинным фильтром с заданной ПЕРЕДАТОЧНОЙ ф-й. Решение: БПФ, Секционированная свертка, алгоритм перекрытия с накоплением (Нусбаумер,Богнер,Блейхут). Длина фильтра L. Выбранное перекрытие 2.
Отработал алгоритм в MathCad: задал произвольную ИМПУЛЬСНУЮ ф-ю, удвоил дополнив нулями и через БПФ вычислил весовую функцию преобразования (L комлексных чисел) (1). На длинном (10 секций) тесте (набор ступенек) убедился, что моя свертка и классическая линейная - совпадают.
Теперь по условию задачи задаю нужную ПЕРЕДАТОЧНУЮ ф-ю (L/2 комлексных чисел). Через ОБПФ получаю ИМПУЛЬСНУЮ ф-ю (L вещественных чисел), дополняю нулями и далее по (1). Все опять совпадает кроме главного: В качестве тестовой ПЕРЕДАТОЧНОЙ ф-и выбрал ФНЧ т.е. вещественную последовательность вида 1,1...1,0,0.....0. При малой длинне единичного интервала (полоса пропускания) должен визуально наблюдать сглаживание ступенй, а этого нет. Крутые ступени и дребезг на переходах . Где ошибаюсь?
Заранее спасибо.
Go to the top of the page
 
+Quote Post
DRUID3
сообщение Mar 10 2009, 05:23
Сообщение #2


山伏
*****

Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294



Ничего вобщем-то непонятно. Рисунки(графики) в студию. Вообще не понял, что же Вы там дополнили нулями в процессе непрерывной свертки... хм...

P.S.: и вообще, не мешало бы понакрутить ухи тому кто первым в литературе орисал трюк с дополнением нулями и не удостоился дальше растолковать, что область его правильных решений это очень частный случай...


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
jojo
сообщение Mar 10 2009, 11:54
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 574
Регистрация: 9-10-04
Из: FPGA-city
Пользователь №: 827



>что область его правильных решений это очень частный случай...
Поясните это, пожалуйста.

Предполагаю, что в исходной проблеме наверняка в алгоритме или в реализации неточность. Реализация никогда не работала, а ответ случайно получался удобоваримый при отладке.
Go to the top of the page
 
+Quote Post
#Andre
сообщение Mar 11 2009, 00:07
Сообщение #4





Группа: Новичок
Сообщений: 3
Регистрация: 9-03-09
Пользователь №: 45 874



Цитата
Ничего вобщем-то непонятно. Рисунки(графики) в студию. Вообще не понял, что же Вы там дополнили нулями в процессе непрерывной свертки... хм...

P.S.: и вообще, не мешало бы понакрутить ухи тому кто первым в литературе орисал трюк с дополнением нулями и не удостоился дальше растолковать, что область его правильных решений это очень частный случай...


Секционированная свертка,алгоритм перекрытия с накоплением:
Режем входную последовательность x на перекрывающиеся куски xi. Далее
yi=IFFT(FFT(xi)*W), W=FFT(h || 0...0), где h - импульсная функция фильтра. Из полученного yi
отбрасываем бракованный кусок, а остаток на выход. Повторяем до бесконечности. Получаем линейную свертку h*x. Дополнение нулями позволяет обыграть тот факт, что просто IFFT(FFT(xi)*FFT(h)) есть циклическая свертка. Нам же нужна линейная. Вроде классика. Ухи крутить - не допрыгнуть.

Цитата
Предполагаю, что в исходной проблеме наверняка в алгоритме или в реализации неточность. Реализация никогда не работала, а ответ случайно получался удобоваримый при отладке.


Какая случайность? При тестировании выбираю случайный сигнал и случайную же имульсную ф-ю
и сравниваю истинную свертку и секционированную. Раз за разом дельта 10е-12. Нет. У меня сомнение- правильно ли я делаю, когда исходную передаточную ф-ю R употребляю так:
W=FFT(IFFT( R ) || 0...0)
Go to the top of the page
 
+Quote Post
jojo
сообщение Mar 11 2009, 09:25
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 574
Регистрация: 9-10-04
Из: FPGA-city
Пользователь №: 827



Понимаете, прямые и быстрые свертки от одних и тех же данных либо совпадают, либо нет. Когда они значительно не совпадают - есть дыра в алгоритме.

В деле секционирования сверток нули дополняются во временной области. В частотной области производится только умножение спектров.

поэтому
W1=(FFT( R, 0...0) )

--

Нет, но выше сами все написали. Тогда отладка просто требуется.
Go to the top of the page
 
+Quote Post
Самурай
сообщение Mar 11 2009, 10:11
Сообщение #6


Местный
***

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



Цитата(#Andre @ Mar 9 2009, 23:44) *
В качестве тестовой ПЕРЕДАТОЧНОЙ ф-и выбрал ФНЧ т.е. вещественную последовательность вида 1,1...1,0,0.....0. При малой длинне единичного интервала (полоса пропускания) должен визуально наблюдать сглаживание ступенй, а этого нет. Крутые ступени и дребезг на переходах . Где ошибаюсь?
Заранее спасибо.


Да нигде Вы вроде не ошибаетесьsmile.gif. И кто Вам сказал, что вы должны наблюдать полное сглаживание СТУПЕНЕЙ?smile.gif. При подаче на вход фильтра ступенчатого сигнала, на выходе Вы увидите переходную ф-ю фильтра. Для КИХ ФНЧ это и будет скачок с длительностью 2/L (примерно) и осцилляциями перед и после скачка.
Go to the top of the page
 
+Quote Post
#Andre
сообщение Mar 12 2009, 07:38
Сообщение #7





Группа: Новичок
Сообщений: 3
Регистрация: 9-03-09
Пользователь №: 45 874



Цитата
И кто Вам сказал, что вы должны наблюдать полное сглаживание СТУПЕНЕЙ?. При подаче на вход фильтра ступенчатого сигнала, на выходе Вы увидите переходную ф-ю фильтра. Для КИХ ФНЧ это и будет скачок с длительностью 2/L (примерно) и осцилляциями перед и после скачка.

Может быть вы правы. Признаюсь: меня смущает насколько W=FFT(IFFT( R ), 0..0) (1) не похожа на простую в трактовке R. Да, эти спектры разного разрешения, но чтобы настолько разниться формой!
В этой связи у меня еще вопрос. В процессе быстрой свертки мы имеем дармовую возможность копить спектральную оценку входного сигнала S. Это привлекательно с точки зрения адаптивной фильтрации, когда S влияет или подменяет R . Но S такой же размерности как и W. И, если ошибки нет, и переход R->W корректен (1), то как выглядит преобразование S -> R? Нет указаний sad.gif.
Go to the top of the page
 
+Quote Post

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

 


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


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