Использование библиотеки Arduino fix_fft или arduinoFFT для фильтрации определенного звука?
Я хотел бы знать, есть ли способ отфильтровать определенный звук с помощью FFT на arduino. Например, в моем анализе есть частота звука ветра, и я хочу ее убрать. Я много искал это, но не нашел ничего полезного для решения этой проблемы.
@Adroutos, 👍1
1 ответ
БПФ – это инструмент для анализа звука. Это не очень подходит для фильтрации, если только у вас нет лишних вычислительных мощностей. И это еще менее подходит для фильтрации в реальном времени, если это то, чем вы занимаетесь. после.
Попытка отфильтровать шум на основе его частоты является разумным стратегия для узкополосного шума, т.е. шума, который лежит в узкой полосе частоты. Вы можете надеяться, что, если повезет, удалив этот узкий полоса не слишком сильно влияет на интересующую часть сигнала.
Увы, шум ветра очень широкополосный, хотя и имеет больший вес на низких частотах. частоты:
(источник изображения).
Если интересующие вас частоты выше ≈ 2–4 кГц, вы можете попробуйте простой фильтр верхних частот. Что-то вроде этого должно работать даже на Arduino, если частота дискретизации не слишком высока:
static uint16_t filter(uint16_t input)
{
static uint16_t sum;
uint16_t delta = input - (sum >> SCALE);
sum += delta;
return delta
}
где SCALE
– небольшая константа, определяющая частоту среза.
Изменить: передаточная функция Z-домена этого фильтра
H = (z − 1) / (z − u)
где u = 1 − 2−SCALE. Тогда его частота среза примерно fsamp ÷ (2 π 2SCALE).
- Arduino Uno: avrdude: stk500_recv(): программатор не отвечает
- Как сгенерировать файлы .a и .so для добавления в проект arduino
- Проблемы со скоростью шагового двигателя Nema 17
- Запуск кода кодировщика одновременно с другим кодом в Arduino
- Балансировка маятника с использованием PID
- Операторы If и while не работают
- Проблема повторения
- Arduino PID для маятника пропеллера для горизонтальной балансировки
Отличный ответ. Обратите внимание, что Arduino на основе AVR далеки от «нагрузки вычислительной мощности». На самом деле они совершенно противоположны и выполняют математику с плавающей запятой в программном обеспечении. Их математика очень медленная, а FFT интенсивно работает с плавающей запятой., @Duncan C