Вопрос по алгоритму БПФ [Закрыто]
Если сигнал идет с амплитудой A, то на выходе будет максимум величины A*n, где n - размер массива. По крайней мере большинство реализаций ведут себя так.
Имеется тестовый сигнал, являющийся суммой синусоид 10Гц и 10.5Гц.
Максимум амплитуды сигнала отмечен маркером и показан слева.
Полученный спектр виден справа. Видно два пика, соответствующие 10 и 10.5 Гц. Здесь всё ok.
Однако непонятно, в каких единицах и что означают числа по оси ординат?
Если сигнал идет с амплитудой A, то на выходе будет максимум величины A*n, где n - размер массива. По крайней мере большинство реализаций ведут себя так.
Пробовал подавать на вход сигналы с разной частотой. n был одинаков, а выходные значения
амплитуды спектра различались.
Если сигнал идет с амплитудой A, то на выходе будет максимум величины A*n, где n - размер массива. По крайней мере большинство реализаций ведут себя так.
Что-то не сходится.
В приведённом выше примере имеется сигнал со следующими парамерами:
кол-во отсчётов - 15000 (60 сек
при частоте дискретизации, Fs=250Гц;
максимум амплитуды сигнала: +32734;
минимум амплитуды сигнала: -32734;
Максимальное отмеченное значение амплитуды спектра получилось равным величине:
119 670 305, 89.
Надо проверить, чтобы тестовый сигнал не "расплывался" по выбранной сетке частот, чтобы вся спектральная мощность ушла в один пик.
Есть ещё мнения?
Если сигнал идет с амплитудой A, то на выходе будет максимум величины A*n, где n - размер массива. По крайней мере большинство реализаций ведут себя так.
Итак, величина по Y выходного спектра равна произведению амплитуды входного сигнала на
половину эпохи БПФ преобразования.
Y=A*FFT/2
Всем спасибо!
Отдельное спасибо !
ЗЫ: А разработчики могли бы пояснить всё это, например в описании компонента. Тем более, что контора-то известная (www.basegroup.ru).
Оставить комментарий
dimon72
Требуется получить спектр некоего сигнала.Я имею алгоритм, который делает БПФ.
На вход алгоритма подаю динамический массив SQRe.
В результате работы алгоритма получаю выходные векторы - динамические массивы
SpRe и SpIm.
Вопрос: SpIm меня не интересует, мне нужна информация об амплитуде спектра, т.е.,
меня интересует массив SpRe. Почему-то его значения получаются в каких-то непонятных
единицах.
Я что-то не могу понять. Вроде я должен получить набор коэффициентов 0...1 для заданной
сетки частот. Например, беру входной сигнал 10Гц, 16 бит со значениями, изменяющимися на полную шкалу от -32768 до +32768. После БПФ я, по идее, должен получить пик на 10 Гц, который должен быть амплитудой +32768. (Я имею в виду действительную часть, её модуль; считаю также, что я попал в сетку частот преобразования).
В результате же использования приведённого ниже алгоритма я получаю с виду вроде бы нормальный спектр, но его значения по Y выражены в каких-то огромных числах. Непонятно откуда они взялись. Кто-нибудь знает что это за хрень?
P.S. Просьба не пинать, т.к. я гуманитарий и основы ПФ знаю очень смутно.
Вот сам алгоритм:
Переменные: