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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Вычисление спектра выборки, когда выборка больше, чем требуемое разрешение
DMax
сообщение Oct 20 2008, 14:36
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 161
Регистрация: 19-01-08
Из: Питер
Пользователь №: 34 234



Допустим нужно нам получить спектр сигнала и допустим нужно сделать для этого именно N-точечное БПФ. Однако у нас есть выборка сигнала длинной kN, где k - целое число > 1. Тут имеется три варианта:
1) Взять любые подряд идущие N-точек из выборки и посчитать на них БПФ, но так мы теряем полезный сигнал, который можно было бы использовать.
2) Сделать k раз БПФ и результат усреднить. Вроде бы хорошо, но долго.
3) Каким-то образом усреднить выборку до N-точек и сосчитать один раз БПФ.

Собственно по 3-му пункту мне достался какой-то код, который не до конца понятно что делает. В чем я успел разобраться так это в том, что он умножает всю выборку на окно Кайзера длинной kN, затем ещё на какое-то окно, а затем хитрым образом складывает отсчеты сигнала. А именно так, если s - это исходная выборка умноженная на окна, а a - выборка, которая подается на БПФ, то:
a_0 = s_0 + s_N + s_{2*N} + ... + s_{(k-1)*N}
a_1 = s_1 + s_{N+1} + s_{2*N+} + ... + s_{(k-1)*N+1}
...
a_{N-1} = s_{N-1} + s_{2*N-1} + ... + s_{k*N - 1}

Собственно, кто-нить пояснит что здесь за математика такая? Как это работает и что здесь делается.
Go to the top of the page
 
+Quote Post
petrov
сообщение Oct 21 2008, 20:03
Сообщение #2


Гуру
******

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



Читайте про банки фильтров. а_0...a_{N-1} - это выходы полифазного фильтра. Каждый подканал на выходе БПФ имеет импульсную характеристику s_0...s_{k*N - 1}, таким образом можно получить например АЧХ подканала близкую к прямоугольной с большим подавлением остальных подканалов, а не типа sinx/x как у просто БПФ.

Сообщение отредактировал petrov - Oct 21 2008, 20:05
Go to the top of the page
 
+Quote Post
ivan219
сообщение Nov 23 2008, 21:02
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



А можно по подробнее???
Go to the top of the page
 
+Quote Post
ivan219
сообщение Aug 21 2009, 19:06
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



Up
Go to the top of the page
 
+Quote Post
_ea_
сообщение Aug 22 2009, 01:53
Сообщение #5





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



Над s выполняется БПФ размера kn, находится только каждая k-ая частота. Посмотрите на граф БПФ с прореживанием по частоте. Если выкинуть не нужные вычисления то от бабочек на первых этапах как раз останется написанная вами сумма.
Go to the top of the page
 
+Quote Post
bahurin
сообщение Aug 22 2009, 06:00
Сообщение #6


Местный
***

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



Цитата(DMax @ Oct 20 2008, 18:36) *
Допустим нужно нам получить спектр сигнала и допустим нужно сделать для этого именно N-точечное БПФ. Однако у нас есть выборка сигнала длинной kN, где k - целое число > 1. Тут имеется три варианта:
1) Взять любые подряд идущие N-точек из выборки и посчитать на них БПФ, но так мы теряем полезный сигнал, который можно было бы использовать.
2) Сделать k раз БПФ и результат усреднить. Вроде бы хорошо, но долго.
3) Каким-то образом усреднить выборку до N-точек и сосчитать один раз БПФ.

Собственно, кто-нить пояснит что здесь за математика такая? Как это работает и что здесь делается.


Это называется полифазное БПФ (polyphase FFT). Читай что не ясно спрашивай.
Go to the top of the page
 
+Quote Post
petrov
сообщение Aug 22 2009, 08:53
Сообщение #7


Гуру
******

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



Цитата(bahurin @ Aug 22 2009, 10:00) *
Алгоритм обладает недостатками:
1. Чувствительность к выбору сглаживающего окна. Неправильный выбор окна приводит к потерям гармоник сигнала. Это необходимо учитывать при использовании полифазного БПФ.


Это не недостаток, если разработчик выбрал такой фильтр что АЧХ соседних поднесущих не перекрываются и соответственно есть гармоники которые ни в один из фильтров не попадают то это недостаток разработчика а не быстрого алгоритма.

Цитата(bahurin @ Aug 22 2009, 10:00) *
Алгоритм обладает недостатками:
2. Полифазное БПФ - преобразование с потерями, и для него отсутствует обратное преобразование.


При правильном выборе фильтра есть обратное преобразование, и сигнал проходя через прямое-обратное преобразование не претерпевает никаких изменений кроме задержки, это называется perfect reconstruction.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Aug 22 2009, 09:19
Сообщение #8


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Есть предложение получить суммы (или среднее) для каждой пачки из k последовательных значений (таких сумм получится ровно N), а затем получить их БФП, однократно применяя процедуру FFT. По идее должен получиться усредненный спектр.
Go to the top of the page
 
+Quote Post
bahurin
сообщение Aug 22 2009, 09:45
Сообщение #9


Местный
***

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



Цитата(petrov @ Aug 22 2009, 12:53) *
Это не недостаток, если разработчик выбрал такой фильтр что АЧХ соседних поднесущих не перекрываются и соответственно есть гармоники которые ни в один из фильтров не попадают то это недостаток разработчика а не быстрого алгоритма.

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

Цитата(petrov @ Aug 22 2009, 12:53) *
При правильном выборе фильтра есть обратное преобразование, и сигнал проходя через прямое-обратное преобразование не претерпевает никаких изменений кроме задержки, это называется perfect reconstruction.
Может быть в частных случаях это и возможно, но в общем случае это не реально, как бы вы не выбирали окно. Если было 4096 точек и вы смогли бы представить сигнал безошибочно всего 1024 точками спектра, то почему бы вам не взять 1024 точки спектра используя тот же алгоритм не представить этот спектр скажем 128 точками и т.д. все это было бы можно свернуть в одно число!!! Поэтому при использовании полифазного БПФ можно говорить лишь о приближенном представлении. Разумеется в некоторых частных случаях можно произвести и безошибочное восстановление, я не отрицаю, можно придумать много таких примеров, но я говорю об общем случае, когда нет никакой априорной информации о сигнале, кроме того что известно, что частота дискретизации выбрана по теореме отсчетов.

Цитата(Xenia @ Aug 22 2009, 13:19) *
Есть предложение получить суммы (или среднее) для каждой пачки из k последовательных значений (таких сумм получится ровно N), а затем получить их БФП, однократно применяя процедуру FFT. По идее должен получиться усредненный спектр.

ТАК НЕЛЬЗЯ: возьмем сигнал 1 1 -1 -1 -1 -1 1 1 поделим на два сумма первых четырех отсчетов равна сумме вторых четырех и равна 0! Если исходный сигнал есть стационарный процесс с нулевым средним то такое усреднение во времени ни к чему хорошему точно не приведет!

Сообщение отредактировал bahurin - Aug 22 2009, 09:56
Go to the top of the page
 
+Quote Post
petrov
сообщение Aug 22 2009, 10:20
Сообщение #10


Гуру
******

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



Цитата(bahurin @ Aug 22 2009, 13:45) *
Все таки это недостаток, так как алгоритм перестает быть универсальным и заставляет пользователя предварительно исследовать окна на предмет потерь гармоник сигнала. Кроме того из приведенных примеров явно следует, что уменьшается амплитуда гармоники при различных сглаживающих окнах.


От быстрого алгоритма можно абстрагироваться. Делаем преобразование в лоб, N синхронных гетеродинов сносят каждый свою частоту на нулевую, затем N FIR фильтров, затем прореживание в N раз, и чья вина что фильтры слишком узкие и пробелы в частотной области есть, быстрая реализация этого алгоритма здесь совершенно не при чём.



Цитата(bahurin @ Aug 22 2009, 13:45) *
Может быть в частных случаях это и возможно, но в общем случае это не реально, как бы вы не выбирали окно. Если было 4096 точек и вы смогли бы представить сигнал безошибочно всего 1024 точками спектра, то почему бы вам не взять 1024 точки спектра используя тот же алгоритм не представить этот спектр скажем 128 точками и т.д. все это было бы можно свернуть в одно число!!! Поэтому при использовании полифазного БПФ можно говорить лишь о приближенном представлении. Разумеется в некоторых частных случаях можно произвести и безошибочное восстановление, я не отрицаю, можно придумать много таких примеров, но я говорю об общем случае, когда нет никакой априорной информации о сигнале, кроме того что известно, что частота дискретизации выбрана по теореме отсчетов.


Perfect reconstruction банки фильтров для любых сигналов работают и не надо никакой априорной информации. Гипотетический Perfect reconstruction банк фильтров имеет 1024 FIR фильтра на 1024*4=4096 коэффициентов каждый, на выходе каждого фильтра сигнал прорежен в 1024 раза, входной блок в 4096 отсчётов на выходе будет представлен 4-мя блоками по 1024 отсчёта по которым может идеально точно восстановлен.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Aug 22 2009, 12:34
Сообщение #11


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(bahurin @ Aug 22 2009, 12:45) *
ТАК НЕЛЬЗЯ: возьмем сигнал 1 1 -1 -1 -1 -1 1 1 поделим на два сумма первых четырех отсчетов равна сумме вторых четырех и равна 0! Если исходный сигнал есть стационарный процесс с нулевым средним то такое усреднение во времени ни к чему хорошему точно не приведет!


Так можно, поскольку в названии темы автор пишет "когда выборка больше, чем требуемое разрешение". Т.е. ему требуется разрешение, меньшее чем то, которое можно получить по полной выборке, а стало быть он сознательно желает урезать и частоту Найквиста, выше которой спектр не просматривается.
В вашем примере "1 1 -1 -1 -1 -1 1 1" вы выбрали k=4 ("сумма первых четырех отсчетов"), а следовательно и "требуемое разрешение" у вас выбрано в 4 раза меньше возможного. А при таком разрешении тонкая структура внутри четверки и не должна выявляться.
Если же требуется максимально возможное разрешение, то надо дополнять последовательность нулями до ближайшей степени двойки, а потом применить к ней FFT. Тогда всё будет видно. Однако такое решение противоречит желанию автора темы иметь разрешение меньшее, чем позволяет выборка.
Go to the top of the page
 
+Quote Post
bahurin
сообщение Aug 23 2009, 09:59
Сообщение #12


Местный
***

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



Цитата
Perfect reconstruction банки фильтров для любых сигналов работают и не надо никакой априорной информации. Гипотетический Perfect reconstruction банк фильтров имеет 1024 FIR фильтра на 1024*4=4096 коэффициентов каждый, на выходе каждого фильтра сигнал прорежен в 1024 раза, входной блок в 4096 отсчётов на выходе будет представлен 4-мя блоками по 1024 отсчёта по которым может идеально точно восстановлен.


Абсолютно правильно если есть 4096 отсчетов на входе и 4096 отсчетов на выходе. Полифазное же БПФ берет 4096 отсчетов и делает из них всего 1024 спектральных отсчета (как бы из 4 фильтров берет всего один). В этом случае безошибочного восстановления не получится!

Цитата
В вашем примере "1 1 -1 -1 -1 -1 1 1" вы выбрали k=4 ("сумма первых четырех отсчетов"), а следовательно и "требуемое разрешение" у вас выбрано в 4 раза меньше возможного. А при таком разрешении тонкая структура внутри четверки и не должна выявляться.
Если же требуется максимально возможное разрешение, то надо дополнять последовательность нулями до ближайшей степени двойки, а потом применить к ней FFT. Тогда всё будет видно. Однако такое решение противоречит желанию автора темы иметь разрешение меньшее, чем позволяет выборка.


Читайте внимательно статью про полифазное БПФ. Там написано, что имея 4096 отсчетов можно получить спектр используя 1024-точечное БПФ с разрешением ЛУЧШИМ нежили использовать 1024-точечное БПФ для сигнала 1024 отсчетов. Это то что хочет автор, отсчетов сигнала в 4 раза больше чем отсчетов спектра. То что вы предлагаете это неправильно. Если вы возьмете стационарный процесс с нулевым среднем, то при усреденении внутри интервала всегда будет 0 и получите что сигнал после вашей обработки равен 0 и спектр будет равен нулю! Возьмите сигнал одну синусоиду с частотой 0.125 Гц продискретизируйте с частотой 1 Гц и уменьшите количество отсчетов в 8 раз путем усреднения по 8 отсчетам и вы увидите, что при усреденении вы всегда берете один целый период синусоиды и получаете сумму равную нулю! Я не знаю как вам еще это объяснить? Могу пример дать скажем из матлаба.
Go to the top of the page
 
+Quote Post
ivan219
сообщение Aug 23 2009, 09:59
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



А причём тут частота Найквиста? Нужно к примеру только из 16384 числа выборок получить 256 частот спектра всех этих выборок. С наименьшими затратами по времени и ресурсам в принципи не столь актуально главное с нулевыми искажениями.

Сообщение отредактировал ivan219 - Aug 23 2009, 10:03
Go to the top of the page
 
+Quote Post
bahurin
сообщение Aug 23 2009, 10:14
Сообщение #14


Местный
***

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



Цитата(ivan219 @ Aug 23 2009, 13:59) *
А причём тут частота Найквиста? Нужно к примеру только из 16384 числа выборок получить 256 частот спектра всех этих выборок. С наименьшими затратами по времени и ресурсам в принципи не столь актуально главное с нулевыми искажениями.


что значит с нулевыми искажениями? Если у вас 16384 отсчета то возьмите БПФ от этого сигнала и получите 16384 отсчета которые и есть БЕЗ ИСКАЖЕНИЙ. По ним вы сможете используя обратное преобразование снова получить 16384 отсчета сигнала. Если вы каким либо способом из 16384 отсчетов спектра возьмете всего 256 отсчетов спектра, то вы НИКОГДА не восстановите 16384 отсчетов сигнала по 256 отсчетам спектра без ошибок. Одним из способов взять из 16384 всего 256 отсчетов это выдернуть каждый 64 отсчет (это и есть полифазное БПФ) только предварительно надо произвести оконное сглаживание чтобы при прореживании не потерять спектральные составляющие.
Go to the top of the page
 
+Quote Post
petrov
сообщение Aug 23 2009, 10:15
Сообщение #15


Гуру
******

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



Цитата(bahurin @ Aug 23 2009, 13:59) *
Полифазное же БПФ берет 4096 отсчетов и делает из них всего 1024 спектральных отсчета (как бы из 4 фильтров берет всего один). В этом случае безошибочного восстановления не получится!


Это ошибка разработчика а не недостаток алгоритма, например точно так же слишком сильно не по Котельникову прореживая отсчёты на выходе децимирующего фильтра будут спектральные наложения, но это не недостаток алгоритма полифазной фильтрации.
Go to the top of the page
 
+Quote Post

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

 


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


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