Algoritmos integrados de uso común: filtrado simple

El filtrado simple es una técnica de procesamiento de señales digitales que se utiliza para preprocesar señales digitales. Su objetivo principal es reducir el ruido en la señal y aumentar la relación señal-ruido de la señal. Hay muchas formas de filtrado simple, y solo estoy presentando una de ellas aquí.

Hay dos tipos principales de filtrado simple, a saber, el filtrado lineal y el filtrado no lineal. El filtrado lineal se basa en operaciones lineales, que incluyen principalmente el filtrado de promedio y el filtrado de convolución. El filtrado promedio consiste en reducir el ruido dividiendo una señal en varias partes en promedio. El filtrado de convolución consiste en reducir el ruido convolucionando la señal con un núcleo de convolución.

El filtrado no lineal se basa en operaciones no lineales, que incluyen principalmente el filtrado de mediana y el filtrado de filtro. El filtrado de la mediana consiste en reducir el ruido clasificando un segmento de la señal y tomando el valor de la mediana. El filtrado de filtros, por otro lado, reduce el ruido convolucionando la señal con un filtro.

/**
 * @brief			简单滤波
 * @param[out]		lpf : 滤波结构数据指针
 * @param[in]		rawData : 原始数据
 */
void SimpleFilter(LpfSimple_t* lpf, int16_t rawData)
{
    
    
	int16_t FilterBuffSort[SimpleFilterDepth] = {
    
    0};	// 暂存排序值

    lpf->OriginData = rawData;
    // 滑动递推更新旧值
    for (uint16_t i = 1; i < SimpleFilterDepth; i ++ ) {
    
    
    	lpf->FilterBuff[i] = lpf->FilterBuff[i - 1];
    }
	// 简单强制消抖 加权存入新值
    if ((fabs(lpf->OriginData - lpf->FilterBuff[0])) < 2.0f) {
    
    
    	lpf->FilterBuff[0] = lpf->OriginData * 0.70f + lpf->FilterBuff[0] * 0.30f;
    } else {
    
    
    	lpf->FilterBuff[0] = lpf->OriginData;
    }
	// 存储待排序值
	memcpy(FilterBuffSort, lpf->FilterBuff, sizeof(lpf->FilterBuff));
	// 升序排序
	Quick_Sort(FilterBuffSort, 0, sizeof(lpf->FilterBuff) - 1, 0);
	// 中值滤波
	lpf->FilterBuff[0] = 0;    // 先清零
	for (uint16_t i = 2; i < (SimpleFilterDepth - 2); i ++ ) {
    
    
		lpf->FilterBuff[0] += FilterBuffSort[i];
	}
	lpf->FilterBuff[0] = lpf->FilterBuff[0] / (SimpleFilterDepth - 4);	// 去除四个极值再计算均值
}

Esta es una técnica de preprocesamiento de señales fácil de entender y fácil de implementar que se utiliza principalmente para eliminar el ruido y aumentar la relación señal-ruido. Sin embargo, en el caso de tratar con ruido complejo y requerir un rendimiento de dominio de tiempo de señal alto, el efecto del filtrado simple será inferior a otros algoritmos de filtrado complejos, que deben sopesarse de acuerdo con escenarios de aplicación específicos.

Entre ellos, el filtro mediano es para reducir el ruido clasificando la señal y tomando el valor mediano. El filtrado de filtros, por otro lado, reduce el ruido convolucionando la señal con un filtro.

El contenido de la estructura del archivo .h correspondiente al código anterior es el siguiente

#define SimpleFilterDepth 10
typedef struct {
    
    
	int16_t OriginData;
	int16_t FilterBuff[SimpleFilterDepth];
} LpfSimple_t;

La ventaja del filtrado simple es que es fácil de entender y de implementar. Pero su desventaja es que es menos efectivo para eliminar el ruido complejo. Y puede dar lugar a un rendimiento deficiente de la señal en el dominio del tiempo.

En las aplicaciones prácticas, es posible que los algoritmos de filtrado simples no cumplan completamente con los requisitos, y es necesario combinar otros algoritmos de filtrado para mejorar el efecto del procesamiento de la señal. Por ejemplo, en el procesamiento de señales, primero puede usar algoritmos de filtrado simples para eliminar el ruido y luego usar otros algoritmos de filtrado complejos para mejorar la señal.

El filtrado es una parte importante del procesamiento de la señal. Puede reducir el ruido de manera eficaz y mejorar la relación señal-ruido. Sin embargo, cuando se trata de ruido complejo y se requiere un alto rendimiento en el dominio del tiempo de la señal, es necesario combinar otros algoritmos de filtrado para obtener una mejor calidad. resultados efecto de procesamiento.

Supongo que te gusta

Origin blog.csdn.net/sorcererr/article/details/128701253
Recomendado
Clasificación