Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Амплитуда спектральных составляющих
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
kolobochishe
Все доброго дня sm.gif

Как правильно бороться с известной проблемой, когда частота сигнала попадает между бинами БПФ?

Т.е. шаг частотной сетки, например, 100 Гц. Тогда сигнал частотой 1150 Гц будет отображаться на спектре 2-мя составляющими с меньшей амплитудой, чем в реальности.

Можно уменьшить шаг сетки, дополнить нулями. А есть еще хорошие способы?
GetSmart
Есть относительно простые методы интерполяции по 2-3 точкам. Пораболические например.
Но это ещё нужно точно знать, что эти два бина есть один "размазанный", а не два независимых сигнала. Ведь может быть и такое, т.к. БПФ "разрешает" сигналы из разных бинов.

Для определения амплитуды синуса с самой максимальной энергией подойдёт и 2^n-кратное дополнение нулями и взятие БПФ.
kolobochishe
Цитата(GetSmart @ Apr 3 2012, 13:49) *
Но это ещё нужно точно знать, что эти два бина есть один "размазанный", а не два независимых сигнала. Ведь может быть и такое, т.к. БПФ "разрешает" сигналы из разных бинов.


не уточнил. мы не знаем одна это частота или 2 близкие.

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

Сейчас попробовал разные окна. И вот что получается

Прямоугольное окно - отношение (Амплитуда спектральной составляющей с частотой между бинами)/(Амплитуда спектральной составляющей с частотой точно в центре бина) = 0,64
Синусное окно - отношение (Амплитуда спектральной составляющей с частотой между бинами)/(Амплитуда спектральной составляющей с частотой точно в центре бина) = 0,79
Окно Блэкмана - отношение (Амплитуда спектральной составляющей с частотой между бинами)/(Амплитуда спектральной составляющей с частотой точно в центре бина) = 0,91

Т.е. наложение окна сглаживает эти "скачки". Но все же 10% - многовато
fontp
QUOTE (kolobochishe @ Apr 3 2012, 13:09) *
не уточнил. мы не знаем одна это частота или 2 близкие.

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

Сейчас попробовал разные окна. И вот что получается

Прямоугольное окно - отношение (Амплитуда спектральной составляющей с частотой между бинами)/(Амплитуда спектральной составляющей с частотой точно в центре бина) = 0,64
Синусное окно - отношение (Амплитуда спектральной составляющей с частотой между бинами)/(Амплитуда спектральной составляющей с частотой точно в центре бина) = 0,79
Окно Блэкмана - отношение (Амплитуда спектральной составляющей с частотой между бинами)/(Амплитуда спектральной составляющей с частотой точно в центре бина) = 0,91

Т.е. наложение окна сглаживает эти "скачки". Но все же 10% - многовато


Только окна иначе никак, если не знаете одна это синусоида или две близкие. Причем две очень близкие под окном будут неразличимы. Это и называется разрешением, когда они видны как два спектральных окна (не смазываются в одно), и оно полностью
определяется длиной выборки. В спектроанализаторах используются окна
kolobochishe
Я так понимаю, это гребешковые искажения.

В книге Ричарда Лайонса "Цифровая обработка сигналов" написано:

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


И предлагает дополнение нулями, если все таки надо поточнее
petrov
Цитата(kolobochishe @ Apr 3 2012, 13:09) *
Т.е. наложение окна сглаживает эти "скачки". Но все же 10% - многовато


Берите окно из семейства flat top и ничего скакать не будет.
fontp
QUOTE (kolobochishe @ Apr 3 2012, 13:18) *
Я так понимаю, это гребешковые искажения.

В книге Ричарда Лайонса "Цифровая обработка сигналов" написано:



И предлагает дополнение нулями, если все таки надо поточнее


Дополнение нулями собирает в энергию бина энергию всех синусоид попадающих под спектральное окно (из соседних бинов). Дополнение нулями не повышает разрешение. Это способ интерполяции и он будет работать только если спектральные линии разнесены достаточно далеко. То есть, как было сказано, если мы заранее знаем, что имеем изолированую спектральную линию
kolobochishe
Цитата(petrov @ Apr 3 2012, 14:19) *
Берите окно из семейства flat top и ничего скакать не будет.


такое хорошее?

Цитата(fontp @ Apr 3 2012, 14:20) *
Дополнение нулями собирает в энергию бина энергию всех синусоид попадающих под спектральное окно (из соседних бинов). Дополнение нулями не повышает разрешение. Это способ интерполяции и он будет работать только если спектральные линии разнесены достаточно далеко. То есть, как было сказано, если мы заранее знаем, что имеем изолированую спектральную линию


пока туговато понимаю. мне надо "помедитировать" и увидеть результат своими глазами.
petrov
Цитата(kolobochishe @ Apr 3 2012, 13:26) *
такое хорошее?


Окна это всегда какие-то компромиссы, флаттопы для того и придуманы чтобы амплитуду точно измерять, но как следствие имеют низкое разрешение.
Alex11
Окно обязательно. А дальше - в зависимости от того, что Вы хотите. Если плавный график - то интерполяция с учетом того, что форма линии определяется функцией окна, свернутой с сигналом (т.е. образ одиночной линии совпадает с окном). Если нужна цифра - находите максимум и суммируете квадраты отсчетов в окрестностях него. Сколько - определяется, опять-таки, функцией окна. Затем извлекаете квадратный корень. Это будет точная амплитуда, скакать не будет вообще (кроме случая с не разрешенной двойной линией, но и здесь будут очень небольшие скачки).
mihalevski
Цитата(kolobochishe @ Apr 3 2012, 12:40) *
Все доброго дня sm.gif

Как правильно бороться с известной проблемой, когда частота сигнала попадает между бинами БПФ?

Т.е. шаг частотной сетки, например, 100 Гц. Тогда сигнал частотой 1150 Гц будет отображаться на спектре 2-мя составляющими с меньшей амплитудой, чем в реальности.

Можно уменьшить шаг сетки, дополнить нулями. А есть еще хорошие способы?



Тупо решение в лоб дольше накапливать исходные данные
Alexey Lukin
Это никоим образом не поможет уточнить амплитуду. Правильные ответы даны выше: если хочется увидеть "правильную" амплитуду на спектре, используем окно flat-top; если хочется её измерить — используем любое подходящее окно и суммируем мощности отсчётов, дающих вклад в синусоиду.
kolobochishe
Цитата(mihalevski @ Apr 12 2012, 12:37) *
Тупо решение в лоб дольше накапливать исходные данные


для меня плохой вариант. и вопрос несколько иной. не в том, как получить большее разрешение по частоте, а как добиться правильного отображения амплитуды такого вот "промежуточного" сигнала. flat top окно очень понравилось для этих целей sm.gif

Цитата(Alexey Lukin @ Apr 12 2012, 13:54) *
Это никоим образом не поможет уточнить амплитуду. Правильные ответы даны выше: если хочется увидеть "правильную" амплитуду на спектре, используем окно flat-top; если хочется её измерить — используем любое подходящее окно и суммируем мощности отсчётов, дающих вклад в синусоиду.


не понял разницы между "измерить" и "увидеть "правильную" амплитуду". Как это?
Alexey Lukin
Разница буквальная: нарисовать либо вычислить. Ибо точно вычислить правильную амплитуду можно и по "неправильному" спектру. С весовыми окнами, отличными от flat-top, у вас будет лучше, например, частотное разрешение.
mihalevski
Цитата(kolobochishe @ Apr 3 2012, 16:09) *
не уточнил. мы не знаем одна это частота или 2 близкие.

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

Сейчас попробовал разные окна. И вот что получается

Прямоугольное окно - отношение (Амплитуда спектральной составляющей с частотой между бинами)/(Амплитуда спектральной составляющей с частотой точно в центре бина) = 0,64
Синусное окно - отношение (Амплитуда спектральной составляющей с частотой между бинами)/(Амплитуда спектральной составляющей с частотой точно в центре бина) = 0,79
Окно Блэкмана - отношение (Амплитуда спектральной составляющей с частотой между бинами)/(Амплитуда спектральной составляющей с частотой точно в центре бина) = 0,91

Т.е. наложение окна сглаживает эти "скачки". Но все же 10% - многовато



Из приведенных данных следует вывод чем навороченнее окно (шире голова) тем лучше результат. Поэтому предлагаю попробовать окно Долльфа-Чебышева там вроде можно эту голову расширять по желанию увеличивая при этом глубину подавления.
Alexey Lukin
Не стоит. Flat-top намного лучше для данной задачи. Дело не в ширине главного лепестка, а в наличии плоской верхушки шириной в 1 бин. У Дольфа-Чебышева её нет.
beaRTS
Цитата(kolobochishe @ Apr 3 2012, 08:40) *
Все доброго дня sm.gif

Как правильно бороться с известной проблемой, когда частота сигнала попадает между бинами БПФ?

А такое не айс???
Serg76
Цитата(beaRTS @ Dec 17 2012, 12:02) *
А такое не айс???

Обсуждалось уже, неоднократно, даже совсем недавно. Есть более точные алгоритмы.
beaRTS
Цитата(Serg76 @ Dec 17 2012, 12:41) *
Обсуждалось уже, неоднократно, даже совсем недавно. Есть более точные алгоритмы.

а по возможности, ткните носом (если ссылки под боком). как-то поиск работает не слава Богу
Serg76
Цитата(beaRTS @ Dec 17 2012, 12:50) *
а по возможности, ткните носом (если ссылки под боком). как-то поиск работает не слава Богу

Например, здесь http://electronix.ru/forum/index.php?showtopic=66966
И еще примерно пяток аналогичных, ищите по форуму
beaRTS
Цитата(Serg76 @ Dec 17 2012, 12:55) *
И еще примерно пяток аналогичных, ищите по форуму

Спасиб. Поищем
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.