дорбаотка медианного фильтра: добавлено инициализирующее значение. чтобы не считал с нуля
This commit is contained in:
parent
0fd9c78c32
commit
c5a01c56ac
@ -193,7 +193,7 @@ typedef struct _FilterMedian_t{
|
||||
uint8_t size; ///< Фактический размер фильтра
|
||||
uint8_t dataProcessing; ///< Флаг - данные в обработке
|
||||
|
||||
int (*reset)(struct _FilterMedian_t *filter, uint8_t size);
|
||||
int (*reset)(struct _FilterMedian_t *filter, uint8_t size, float init_val);
|
||||
float (*process)(struct _FilterMedian_t *filter, float input);
|
||||
} FilterMedian_t;
|
||||
|
||||
@ -261,7 +261,7 @@ typedef struct _FilterLUT_t{
|
||||
|
||||
|
||||
// Float версии функций
|
||||
int FilterMedian_Init(FilterMedian_t* filter, uint8_t size);
|
||||
int FilterMedian_Init(FilterMedian_t* filter, uint8_t size, float init_val);
|
||||
float FilterMedian_Process(FilterMedian_t* filter, float input);
|
||||
int FilterExp_Init(FilterExp_t* filter, float alpha);
|
||||
float FilterExp_Process(FilterExp_t* filter, float input);
|
||||
@ -332,7 +332,7 @@ typedef struct _FilterMedianInt_t{
|
||||
uint8_t size; ///< Фактический размер фильтра
|
||||
uint8_t dataProcessing; ///< Флаг - данные в обработке
|
||||
|
||||
int (*reset)(struct _FilterMedianInt_t *filter, uint8_t size);
|
||||
int (*reset)(struct _FilterMedianInt_t *filter, uint8_t size, int32_t init_val);
|
||||
int32_t (*process)(struct _FilterMedianInt_t *filter, int32_t input);
|
||||
} FilterMedianInt_t;
|
||||
|
||||
@ -403,7 +403,7 @@ typedef struct _FilterLUTInt_t{
|
||||
} FilterLUTInt_t;
|
||||
|
||||
// Int32_t версии функций
|
||||
int FilterMedianInt_Init(FilterMedianInt_t* filter, uint8_t size);
|
||||
int FilterMedianInt_Init(FilterMedianInt_t* filter, uint8_t size, int32_t init_val);
|
||||
int32_t FilterMedianInt_Process(FilterMedianInt_t* filter, int32_t input);
|
||||
int FilterExpInt_Init(FilterExpInt_t* filter, int32_t alpha, int32_t scale);
|
||||
int32_t FilterExpInt_Process(FilterExpInt_t* filter, int32_t input);
|
||||
|
||||
@ -32,11 +32,14 @@ static int Filter_float_compare(const void *a, const void *b) {
|
||||
* @param filter Указатель на структуру фильтра
|
||||
* @return 0 - успех, -1 - ошибка
|
||||
*/
|
||||
int FilterMedian_Init(FilterMedian_t* filter, uint8_t size) {
|
||||
int FilterMedian_Init(FilterMedian_t* filter, uint8_t size, float init_val) {
|
||||
check_init_filter(filter);
|
||||
if (size == 0 || size > FILTER_MEDIAN_MAX_SIZE) return -1;
|
||||
|
||||
memset(filter->buffer, 0, sizeof(filter->buffer));
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
filter->buffer[i] = init_val;
|
||||
}
|
||||
filter->index = 0;
|
||||
filter->size = size;
|
||||
|
||||
@ -301,11 +304,15 @@ static int Filter_int32_compare(const void *a, const void *b) {
|
||||
* @param filter Указатель на структуру фильтра
|
||||
* @return 0 - успех, -1 - ошибка
|
||||
*/
|
||||
int FilterMedianInt_Init(FilterMedianInt_t* filter, uint8_t size) {
|
||||
int FilterMedianInt_Init(FilterMedianInt_t* filter, uint8_t size, int32_t init_val) {
|
||||
check_init_filter(filter);
|
||||
if (size == 0 || size > FILTER_MEDIAN_MAX_SIZE) return -1;
|
||||
|
||||
memset(filter->buffer, 0, sizeof(filter->buffer));
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
filter->buffer[i] = init_val;
|
||||
}
|
||||
|
||||
filter->index = 0;
|
||||
filter->size = size;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user