Цитата(bullit @ Apr 11 2013, 11:47)

Ранее в проекте закладывали oversampling. Но практической пользы я пока не нашел.
видимо неправильно закладывали. Должно помогать.
Смотрю у вас частота дискретизации 10500Гц, а хотите померять 10-30Гц, вот вам и оверсэмплинг.
Осталось сделать downsampling и вытащить низкие частоты вверх.
Советую записать ваш сигнал в WAV-файл, открыть звуковой редактор Audacity, после загрузки файла выбрать режим отображения Spectrogram вместо Waveform. Затем Effect -> Change Speed -> 200%, потом ещё раз и ещё и смотрите на спектре, появляются ли ваши частоты. Появиться они дожны соответсвтенно выше, чем на 10-30Гц, в зависимости от того, насколько вы ускорили запись в Change Speed. Если что-то увидите, есть смысл делать алгоритм. Вот нетребовательный к памяти метод:
Цитата
Code :
//Filtres décimateurs
// T.Rochebois
// Based on
//Traitement numérique du signal, 5eme edition, M Bellanger, Masson pp. 339-346
class Decimateur5
{
private:
float R1,R2,R3,R4,R5;
const float h0;
const float h1;
const float h3;
const float h5;
public:
Decimateur5::Decimateur5():h0(346/692.0f),h1(208/692.0f),h3(-44/692.0f),h5(9/692.0f)
{
R1=R2=R3=R4=R5=0.0f;
}
float Calc(const float x0,const float x1)
{
float h5x0=h5*x0;
float h3x0=h3*x0;
float h1x0=h1*x0;
float R6=R5+h5x0;
R5=R4+h3x0;
R4=R3+h1x0;
R3=R2+h1x0+h0*x1;
R2=R1+h3x0;
R1=h5x0;
return R6;
}
};
отсюда, есть на девять точек
http://www.musicdsp.org/archive.php?classid=3#231Легко переделывается для многокаскадности, в 2-4-8-16 и т.д. раз, место нужно только под переменные h,R каждого из каскадов. Я цеплял 8-каратную децимацию прямо на прерывание АЦП, работало очень хорошо и быстро, без всяких простоев в фоновом режиме.
Если ничего не получается, выложите WAV-файл, может появятся идеи.