LINUX.ORG.RU

История изменений

Исправление 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, :

Что-то мне подсказывает, что задача поставлена некорректно.

Если я правильно помню, то тебе нужно убрать выбросы из сигнала,
для этого необязательно вычислять именно медиану.

Если что - вот мой прошлый пост на эту тему: Посоветуте оптимальный алгоритм поиска медианы (комментарий)

Там небольшое постоянное количество обращений к памяти и
постоянное небольшое время вычисления.

Как раз для быстрой нелинейной фильтрации.

И да, зачем ты создаешь новый тред, когда можно продолжить в старом?