История изменений
Исправление shkolnick-kun, (текущая версия) :
Что-то мне подсказывает, что задача поставлена некорректно.
Если я правильно помню, то тебе нужно убрать выбросы из сигнала,
для этого необязательно вычислять именно медиану.
Если что - вот мой прошлый пост на эту тему: Посоветуте оптимальный алгоритм поиска медианы (комментарий)
только там надо поправить чутка:
int16_t tr_mean(int16_t input)
{
int32_t delta = (int32_t)input - (mean / denom);
int32_t nz = delta * delta; /*Оцениваем квадрат отклонения*/
int32_t alpha = (nz > noise * 9)?med:fast; /*Изменения < 3s будем копить быстрее*/
mean += delta * alpha;
noise += (nz - (noise / denom)) * slow; /*Оценку шума делаем медленнее всего*/
return (int16_t)(mean / denom);
}
Там небольшое постоянное количество обращений к памяти и
постоянное небольшое время вычисления.
Как раз для быстрой нелинейной фильтрации.
И да, зачем ты создаешь новый тред, когда можно продолжить в старом?
Исправление shkolnick-kun, :
Что-то мне подсказывает, что задача поставлена некорректно.
Если я правильно помню, то тебе нужно убрать выбросы из сигнала,
для этого необязательно вычислять именно медиану.
Если что - вот мой прошлый пост на эту тему: Посоветуте оптимальный алгоритм поиска медианы (комментарий)
только там надо поправить чутка:
int16_t tr_mean(int16_t input)
{
int32_t delta = (int32_t)input - (mean / denom);
int32_t nz = delta * delta; /*Оцениваем квадрат отклонения*/
int32_t alpha = (nz > noise * 9)?med:fast; /*Изменения < 3s будем копить быстрее*/
mean += delta * alpha;
noise += (nz - (noise / denom)) * slow; /*Оценку шума делаем медленнее всего*/
return (int16_t)(mean / denom);
}
Там небольшое постоянное количество обращений к памяти и
постоянное небольшое время вычисления.
Как раз для быстрой нелинейной фильтрации.
И да, зачем ты создаешь новый тред, когда можно продолжить в старом?
Исходная версия shkolnick-kun, :
Что-то мне подсказывает, что задача поставлена некорректно.
Если я правильно помню, то тебе нужно убрать выбросы из сигнала,
для этого необязательно вычислять именно медиану.
Если что - вот мой прошлый пост на эту тему: Посоветуте оптимальный алгоритм поиска медианы (комментарий)
Там небольшое постоянное количество обращений к памяти и
постоянное небольшое время вычисления.
Как раз для быстрой нелинейной фильтрации.
И да, зачем ты создаешь новый тред, когда можно продолжить в старом?