Фильтр низких частот в iPhone - PullRequest
1 голос
/ 23 мая 2011

У меня есть код, который реализует фильтр нижних частот, чтобы обнаружить удар по микрофону. Я не могу понять, как определить частоту и выбрать свою собственную АЛЬФА:

lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;

Это должно обнаружить удар по микрофону.

Я хочу получить новую ALPHA для реализации фильтра нижних частот с fc = 1 кГц или выше.

Как мне выбрать другую АЛЬФА для этого?

Они взяли ALPHA = 0,05, и согласно формуле Википедии, с частотой дискретизации 30 раз в секунду, которую они сделали, я получил fc 1,2 Гц.

Или я должен взять частоту дискретизации 44,1 кГц? Сэмплируем сигнал при 30 Гц.

Ответы [ 2 ]

5 голосов
/ 23 мая 2011

Это простой рекурсивный фильтр низких частот, который просто используется для сглаживания измеренной (мгновенной) мощности от микрофона.Обычно требуется низкая частота среза, например, 1 Гц, чтобы отфильтровать весь шум и просто получить сглаженное измерение мощности.Увеличение частоты среза (увеличение АЛЬФА) заставит выходной сигнал реагировать быстрее, но принесет больше шума.И наоборот, уменьшение частоты среза (уменьшение ALPHA) заставит выход реагировать медленнее, но также уменьшит количество шума.

Обратите внимание, что если вы обновляете фильтр только на частоте 30 Гц, вы не сможетеустановите частоту среза на 1 кГц.Скорость Найквиста составляет 15 Гц, поэтому вы можете фильтровать только на частотах ниже этого.Кроме того, нет смысла пытаться фильтровать на такой высокой частоте, если все, что вы хотите сделать, это обнаружить дуть на микрофоне.

0 голосов
/ 01 апреля 2017

Эта страница дает, возможно, более четкую версию формулы с кодом для выбора альфа:

void lowPassFrequency(double* input, double* output, int points)
{
    double RC = 1.0/(CUTOFF*2*3.14); 
    double dt = 1.0/SAMPLE_RATE; 
    double alpha = dt/(RC+dt);
    output[0] = input[0]
    for(int i = 1; i < points; ++i)
    { 
        output[i] = output[i-1] + (alpha*(input[i] - output[i-1]));
    }
}    

Обратите внимание, что она работает на всех точках выборки одновременно, а не во временикак в оригинальном вопросе.

...