Цитата(AD @ 20.10.2010, 11:56)
Я правильно понимаю, что __acc, n_acc - пределы, по которым определяются "шумы"?
да, __acc - это точность (1000 ~ 3 порядка) , а n_acc - величина, обратная к __acc . Это далее для сравнения "больше на 3 порядка" или "меньше на 3 порядка". Поскольку деление - операция "тяжёлая", я вынес её за цикл
Цитата(AD @ 20.10.2010, 11:56)
Сильно ли усложнит задачку следующее добавление, что пределы должны определяться в зависимости от массива/вектора?
да ни грамма не усложнит
Надо сделать: перед вычислением пройтись по данным, определить максимум и минимум. В зависимости от них выбрать __acc.
Цитата(kwisp @ 20.10.2010, 11:58)
Как поведет себя предложенный метод если к примеру первые 2 значения числа больше 1000 и 2000, а остальные 1 2 3 4 5. - какие значения удалятся из интервала?
я код не тестировал. А по алгоритму, щас посмотрим:
__acc=1000;
n_acc=0.001;
исходные данные:
1055, 2055, 1, 2, 3, 4, 5
с болванками:
1055, 1055, 2055, 1, 2, 3, 4, 5, 5
| |
отсюда начинаем здесь стоп
1)
число 1055
k1=1055/1055 ==1 , n_acc<k1<__acc> - оставляем
k2=1055/2055 ==0.513 , n_acc<k2<__acc - оставляем
2)
число 2055
k1=1055/2055 ==0.513 , n_acc<k1<__acc> - оставляем
k2=2055/1 ==2055 , n_acc<__acc<k2 - удаляем
...
ага, дебаг показал уже два косяка:
1) условие проверяется по 2 раза. Сократить до одного раза
2) значение нельзя просто удалять. Его надо заменять на следующее, а затем шагнуть один шаг назад и продолжить оттуда:
1055, 1055, 2055, 1, 2, 3, 4, 5, 5
|
сейчас проверяется
1055, 1055, <2055>, 1, 2, 3, 4, 5, 5
|
надо удалить (заменить на следующее)
1055, 1055, <1>, 1, 2, 3, 4, 5, 5
|
заменили
1055, 1055, <1>, 1, 2, 3, 4, 5, 5
|
шаг назад. Продолжаем отсюда
и ещё один баг: если сканировать с начала, приоритет отдаётся последним значениям. И "низкая волна" в конце перекроет "высокую " в начале. Тут можно попробовать заранее просмотреть данные и ориентироваться на некий уровень.
а ещё, кстати! я у себя делал сглаживание ступенчатого сигнала, наверное такой метод тоже может подойти, сейчас скрины для примера сделаю, прикреплю
без сглаживания
Нажмите для просмотра прикрепленного файлаодна итерация
Нажмите для просмотра прикрепленного файла10 итераций
Нажмите для просмотра прикрепленного файла