Цитата(m31 @ 20.11.2008, 20:34) | Цитата(xvr @ 20.11.2008, 20:27 ) | Если есть гарантированная минимальная амплитуда положительных и отрицательных импульсов - то компаратор с гистерезисом проблему решит, если нет - то придется делать более сложный анализ |
в принципе можно попробовать сделать гарантированную, но она всёравно чего-то синусоидальную форму имеет при большой частоте импульсов(это я об амплитуде положительных и отрицательных импульсов ). Если даже присмотреться, на рисунке что я показал, уже видно... Что можешь посоветовать? как читать куда копать? |
Главное, что бы были 2 гарантированных порога (по амплитуде), тогда можно сделать приблизительно так:
Код | int state=-1; int pulse_count=0; int total_count=0;
const int LoLimit = -100; // Нижний порог const int HiLimit = 100; // Верхний порог const int SamplFreq = 44000; // Частота дискретизации
// Через эту процедуру будет происходить вывод результатов extern void SendPulseCount(int pulse_count_for_1sec);
// Процедуру add_sample вызывать для каждого отсчета с звуковой карты void add_sample(int value) { bool prev_is_0 = (state==0); if (val<LoLimit) state=0; else if (val>HiLimit) state=1; ++total_count; if (prev_is_0 && state==1) ++pulse_count; if (total_count>=SamplFreq) { SendPulseCount(pulse_count); total_count=pulse_count=0; } }
|
|