ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
25 июня
638984
Связанные сообщения
Фильтры
Простейший а-ля медианный фильтр. Инициализируешь 32-х битную целую переменную "Фильтр" первым измеренным значением АЦП, умножен...2023-05-24
Чего-то не соображаю сегодня. Хочу к целочисленным данным применить экспоненциальный фильтр вида Yn=a*X+(1-...2020-08-27
Процитирую самого себя: "Зачем вообще использовать "экспоненциальное скользящее среднее", кроме как от бедности (не хватает ресу...2019-11-01
Да не так страшен этот чёрт. Берём массив длиной 4N, набиваем отсчётами АЦП с частотой 4F, умножаем на синус { 0, 1, 0, -1 } и к...2013-05-26
misyachniy (17.12.2015 20:57, просмотров: 15470)
Некорректное поведение текущего среднего? Для определения длины выборки написал несколько одинаковых фильтров разной длины. // // Фильтр с сайта EasyElectronics.ru // Y(n) = (15*Y(n-1) + X(n)) >> 4 int average_filter(int NewSample, int order) { unsigned int result; result = NewSample; switch (order) { case 2: result = result_2 = ( 3*result_2 + NewSample) >> 2; break; case 3: result = result_3 = ( 7*result_3 + NewSample) >> 3; break; case 4: result = result_4 = (15*result_4 + NewSample) >> 4; break; case 5: result = result_5 = (31*result_5 + NewSample) >> 5; break; case 6: result = result_6 = (63*result_6 + NewSample) >> 6; break; case 7: result = result_7 = (127*result_7 + NewSample) >> 7; break; case 8: result = result_8 = (255*result_8 + NewSample) >> 8; break; } return result; } Принимаю данные на комп и отображаю на графике. MainForm->RawData->Series[0]->AddXY(coorX, (int)data, "",clBlue); MainForm->RawData->Series[1]->AddXY(coorX, average_filter(data,2), "",clGreen); MainForm->RawData->Series[2]->AddXY(coorX, average_filter(data,3), "",clBlack); MainForm->RawData->Series[3]->AddXY(coorX, average_filter(data,4), "",clRed); MainForm->RawData->Series[4]->AddXY(coorX, average_filter(data,8), "",clPurple); Рассчитывал что "мелкоразмерные" фильтры буду использовать для определения наличия полезого сигнала, на фоне "длинного". "Мелкоразмерные" фильтры отслеживают сигнал, а вот усреднение, длиной 256 выборок явно "ползет в низ" от коротких провалов. Предполагаю, что это из за отбрасывания младших разрядов и "не совсем честного" фильтра текущего среднего. Или некорретно написан фильтр?
image