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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> БПФ и ОБПФ с перекрытием
rx9cim
сообщение Jan 7 2013, 07:20
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 2-07-12
Пользователь №: 72 593



Здравствуйте!
Необходимо делать БПФ с перекрытием (overlapping). В моем случае будет буфер длиной 512 выборок.
БПФ будет длиной 256, перекрытие соответственно 50%. Т.е. на 512 сэмплов у меня будет 3 ДПФ - (1-256, 129-384, 256-512). Теперь собственно вопрос - как мне потом после трех ОБПФ склеить конец с началом каждого интервала? Я так понимаю, что нужно для каждого из трех интервалов сделать ОБПФ чтобы перейти в временную область. А после обпф мне необходимо просуммировать отсчеты? Т.е. допустим после первого ОБПФ я получил отсчеты для интервала 1-256, после второго - 129-384, третьего -256-512. Далее нужно просто просуммировать отсчеты ОБПФ (во временной области) в местах перекрытия? Нужно ли перемножать спектры в местах перекрытия а потом уже делать ОБПФ?
Go to the top of the page
 
+Quote Post
V_G
сообщение Jan 7 2013, 10:27
Сообщение #2


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

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Вообще-то суммирование с перекрытием чаще всего делается для учета переходных процессов. В вашем случае первый сегмент во временной области должен содержать, к примеру, 128 первых отсчетов и 128 нулевых. Делаете БПФ длиной 256. Второй сегмент содержит отсчеты 129-256 и еще 128 нулевых, и так далее. Затем делается домножение спектров на ЧХ фильтра, ОБПФ и суммирование во временной области. Делается это для обработки непрерывных (в смысле не ограниченных по времени и числу отсчетов) сигналов.
А вам зачем для всего 512 отсчетов делать сегментирование?
Go to the top of the page
 
+Quote Post
rx9cim
сообщение Jan 7 2013, 11:43
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 2-07-12
Пользователь №: 72 593



Спасибо за ответ. Сигнал конечно будет непрерывный. Еще возник вопрос- мне нужен результат бпф для определения и коррекции характеристик дисбаланса
квадратурного сигнала. Так вот как при этом корректно использовать бпф, ведь половину входных отсчетов нужно обнулять, а мне нужна полная картина. И еще дает ли выигрыш применение окон для сглаживания стыков?
Go to the top of the page
 
+Quote Post
V_G
сообщение Jan 7 2013, 12:40
Сообщение #4


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

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Я не писал, что половину отсчетов надо обнулять. Конкретно:
Сегмент 1: отсчеты 1-128 + 128 нулевых
Сегмент 2: отсчеты 129-256+128 нулевых...
Где здесь обнуление?
Вообще-то количество нулевых отсчетов должно соответствовать длине импульсной характеристики фильтра. Если длина = 56 отсчетов, то и перекрытие может быть всего 56 отсчетов:
Сегмент 1: отсчеты 1-200 + 56 нулевых
Сегмент 2: отсчеты 201-400+56 нулевых...

Дополнение нулевыми отсчетами нужно, чтобы при любом типе входного сигнала вся выходная реакция целиком укладывалась в длину сегмента
Go to the top of the page
 
+Quote Post
petrov
сообщение Jan 7 2013, 13:48
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(V_G @ Jan 7 2013, 16:40) *
Дополнение нулевыми отсчетами нужно, чтобы при любом типе входного сигнала вся выходная реакция целиком укладывалась в длину сегмента


Только rx9cim хочет фильтровать непосредственно в частотной области c произвольными коэффициентами, при этом трудно обеспечить дополненность нулевыми отсчётами ИХ фильтра.
Go to the top of the page
 
+Quote Post
rx9cim
сообщение Jan 7 2013, 14:41
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 2-07-12
Пользователь №: 72 593



Пока ничего фильтровать не нужно. суть такова — мне нужно сделать бпф, набрать статистику, определить параметры дисбаланса и откорректировать бины бпф, затем сделать обпф и дальнейшую обработку проводить уже во временной области. Как дополнение нулями вляет на результат бпф? Если я делаю дополнение нулями, то как мне использовать результат бпф для расчета дисбаланса?
Go to the top of the page
 
+Quote Post
petrov
сообщение Jan 7 2013, 15:24
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(rx9cim @ Jan 7 2013, 18:41) *
Пока ничего фильтровать не нужно. ...откорректировать бины бпф...


Это как бы оно и есть.

Как вы хотите с 50% перекрытием не выйдет качественной реализации, алиасинг будет большой, нужно что-то вроде 90% перекрытия с окном кайзера с beta=10, что по вычислительным затратам не самый оптимальный вариант.


Go to the top of the page
 
+Quote Post
thermit
сообщение Jan 7 2013, 17:00
Сообщение #8


Знающий
****

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



Цитата
petrov:
90% перекрытия с окном кайзера с beta=10, что по вычислительным затратам не самый оптимальный вариант.


Хватит и 50%. Окно кайзера или kbd.
Go to the top of the page
 
+Quote Post
анатолий
сообщение Jan 7 2013, 18:13
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 10-12-05
Из: Украина
Пользователь №: 12 052



Всякое изменение спектра после БПФ и перед ОБПФ - это фильтрация. Следует рассматривать методы секционированной свертки с исп. БПФ, описанные в литературе. Иначе выходной сигнал будет совсем не похожий на входной.
Go to the top of the page
 
+Quote Post
rx9cim
сообщение Jan 20 2013, 09:22
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 2-07-12
Пользователь №: 72 593



Применил алгоритм перекрытие с накоплением. Применяю алгоритм БПФ radix4, исходники из библиотеки CMSIS для STM32. Так вот при наложении окна (у меня БЛэкмэн-Наталл) на входной буфер, пи прослушивании возникают искажения. Если окно не использую - то все нормально звучит. Перекрытие 50%. После ОБПФ результат практически совпадает с входными значениями для расчета БПФ. Почему при наложении окана возникают искажения?
Go to the top of the page
 
+Quote Post
petrov
сообщение Jan 20 2013, 10:05
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(rx9cim @ Jan 20 2013, 13:22) *
Применил алгоритм перекрытие с накоплением. Применяю алгоритм БПФ radix4, исходники из библиотеки CMSIS для STM32. Так вот при наложении окна (у меня БЛэкмэн-Наталл) на входной буфер, пи прослушивании возникают искажения. Если окно не использую - то все нормально звучит. Перекрытие 50%. После ОБПФ результат практически совпадает с входными значениями для расчета БПФ. Почему при наложении окана возникают искажения?


Окно должно обладать свойством, чтобы сумма окон с данным сдвигом равнялась константе.
Go to the top of the page
 
+Quote Post
V_G
сообщение Jan 20 2013, 11:48
Сообщение #12


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

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Я писал о разбиении входного сигнала без перекрытий, перекрытия возникали при суммирование ВЫХОДНЫХ сегментов. В этом случае наложение оконной функции на входной сегмент принципиально вызывает искажения.
Если и входные сегменты делаются с перекрытием, см. совет от petrov, но смысла перекрытия по входу я лично не понимаю.
Т.е., в моем представлении, оконные функции нужны чисто для спектрального анализа без восстановления временных характеристик. Если здесь есть крутые спецы в ЦОС, пусть меня поправят.
Go to the top of the page
 
+Quote Post
rx9cim
сообщение Jan 20 2013, 12:05
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 2-07-12
Пользователь №: 72 593



Попробовал окна Ханна и Хэмминга - искажения все-равно есть. С Хэммингом, правда меньше. Размер БПФ/ОБПФ - 256 точек.
Go to the top of the page
 
+Quote Post
petrov
сообщение Jan 20 2013, 14:47
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(rx9cim @ Jan 20 2013, 16:05) *
Попробовал окна Ханна и Хэмминга - искажения все-равно есть. С Хэммингом, правда меньше. Размер БПФ/ОБПФ - 256 точек.


Для идеального восстановления Хэммингу нужно 75% перекрытие.
https://ccrma.stanford.edu/~jos/sasp/STFT_H..._Window_75.html

А вообще можно и для 50% Хэмминга сделать.
https://ccrma.stanford.edu/~jos/sasp/Overla...omposition.html
Go to the top of the page
 
+Quote Post
thermit
сообщение Jan 21 2013, 12:25
Сообщение #15


Знающий
****

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



Вообще-то что хемминг, что ханн дают идеальное восстановление с 50% перекрытием.
Просто для таких операций надо брать вместо a-b*cos(2*pi*(0:255)/255);
a-b*cos(2*pi*(0:255)/256). Т е окно будет несимметричным.
Кроме того, если с дпф будут осуществлятся какие-то операции нужно применять окно как по входу, так и по выходу.
Причем в качестве окна берется корень из исходного.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st June 2025 - 04:05
Рейтинг@Mail.ru


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