-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ошибка в медианном фильтре N-го порядка #7
Comments
Новое число записывается в буфер в любом случае парой строчек выше buffer[_count] = newVal; |
Попробуйте создать фильтр с буфером скажем на 8 элементов, а затем вызвать filtered 8 раз с одним и тем же числом. И посмотрите что будет в буфере.
Запишется оно да, но массив сортируется пузырьком. Причем не весь, а наполовину вверх/вниз. А в некоторых случаях (когда count=0 или размеру массива) сортировка пропускается. |
Я этот косяк обнаружил когда решил проинициализировать фильтр при первом чтении ADC, сразу затолкав в него количество значений равное размеру буфера. А он мне продолжил нули выдавать как ни в чем не бывало. |
У меня нормально работает с одинаковыми |
Медианный фильтр ведет себя не корректно если на вход подавать одинаковые значения.
Обратите внимание на выражения:
(buffer[_count] > buffer[_count + 1])
(buffer[_count - 1] > buffer[_count]))
Т.е. существует вероятность что новое число вообще не запишется в буфер, если не удовлетворит ни одному из этих условий.
The text was updated successfully, but these errors were encountered: