О библиотеке FFT на Arduino
Из выходных результатов я вижу, что arduinoFFT возвращает только положительные частоты, поэтому я думаю, что он сам удаляет отрицательные значения и компенсирует потерянную энергию путем умножения на 2. Правильно ли это?Ar
@أيمن الفحصي, 👍0
Обсуждение1 ответ
Лучший ответ:
Я не знаю, что вы подразумеваете под "отрицательной" частотой.
БПФ берет набор выборок и возвращает группу "сегментов", количество сегментов которых равно половине количества выборок. Эти сегменты охватывают частоты от 0 Гц до F / 2, где F - частота дискретизации.
Каждый сегмент содержит величину мощности блока частот как по действительной, так и по мнимой "оси" (фактически это пара координат, изображающих вектор).
Вы вычисляете абсолютную мощность ведра, извлекая квадратный корень из суммы квадратов действительной и мнимой составляющих (по сути, старый добрый пифагор).
Это значение "абсолютной мощности" является величиной вектора. Вектор никогда не может иметь величину <0. В конце концов, если у вас есть вектор (1,1) и один из (-1, -1), они оба имеют одинаковую величину, просто с разным углом (в данном примере разность фаз составляет 180 градусов).
спасибо за ответ, господин Маенко. Хотя я только что узнал, что в библиотеке arduinoFFT параметр "FFT_FORWARD" выполняет всю работу (возвращает односторонний энергетический спектр, а также нормализует амплитуды)., @أيمن الفحصي
Я не знаком ни с этой конкретной библиотекой, ни с тем, какие возможности она предоставляет., @Majenko
Последний вопрос, сэр: повлияет ли постоянная составляющая сигнала на амплитуды других гармоник (компонентов) БПФ (для какой-то цели БПФ применяется к выходному сигналу усиленного электронного микрофона)., @أيمن الفحصي
Нет, компонент постоянного тока должен влиять только на сегмент постоянного тока, если вообще влияет, @Majenko
Да благословит вас Бог. Спасибо за помощь ;), @أيمن الفحصي
Пожалуйста, еще один вопрос, сэр: я попытался отфильтровать отобранные данные, используя текущее среднее значение, прежде чем запускать на нем БПФ, чтобы уменьшить шум в выходном сигнале датчика. Однако я не уверен, подходит ли он для аудиосигнала, поскольку результирующий вектор БПФ совсем не похож на нефильтрованный., @أيمن الفحصي
Я имею в виду, что амплитуды, которые я получаю для определенной ячейки, сильно отличаются от тех, где фильтрация не применялась., @أيمن الفحصي
@أيمنالححي: в этом весь смысл фильтрации: изменять амплитуду некоторых частотных составляющих. В случае бегущей медианы вы будете сильно ослаблять более высокие частоты., @Edgar Bonet
На самом деле меня просто интересует диапазон 1-8 кГц. Кроме того, частота дискретизации, которую я считаю наиболее многообещающей, составляет 20480 Гц (с использованием коэффициента 1,28 и теоремы Найквиста). Кроме того, я фильтрую не данные БПФ, а выборочные данные (среднеквадратичное звуковое давление в зависимости от времени). Пожалуйста, что вы думаете по этому поводу?, @أيمن الفحصي
Или, может быть, это действительно связано со временем, которое занимает вычисление медианы?? Однако я не понимаю, почему амплитуды БПФ будут меняться, как вы упомянули, еще до запуска БПФ., @أيمن الفحصي
Видите ли, если бы мы говорили о непрерывном времени, то все было бы проще понять. Но с дискретизированными вычислениями для меня все не так очевидно: (, @أيمن الفحصي
- Существуют ли библиотеки сглаживания сигналов для Arduino?
- Подключить генератор функций к Arduino
- Суммировать значения, сохранить их и распечатать последнее значение
- Перекрестная корреляция Arduino?
- Как вы справляетесь с дрейфом датчиков?
- ШИМ-сигнализация с Arduino: для чего использовать землю?
- Декодировать радиочастотные удаленные сигналы с помощью ESP32 или node MCU?
- Отправлять большие объемы данных в PHP-скрипт через GSM-модуль SIM800L.
Что такое "отрицательная" частота?, @Majenko