中值滤波float Medium_Filter(float input){ /* n为窗口大小 */ const uint8_t n = 10; /* 输入的缓冲区 */ static float x[n] = {0}; /* 输入的缓冲区更新 */ for (uint8_t i = n - 1; i > 0; i--) { x[i] = x[i - 1]; } x[0] = input; /* 输入缓冲区拷贝,排序会被打乱顺序 */ float x_copy[n] = {0}; memcpy(x_copy, x, sizeof(float) * n); /* 升序冒泡排序 */ for (uint8_t j = 0; j < n - 1; j++)//次序 { for (uint8_t i = 0; i < n - j - 1; i++)//排序 { if (x_copy[i] > x_copy[i + 1]) { float temp = x_copy[i]; x_copy[i] = x_copy[i + 1]; x_copy[i + 1] = temp; } } } /* 窗口大小为偶数个 */ if (n % 2 == 0) { return (x_copy[n / 2] + x_copy[n / 2 - 1]) / 2.0f; } /* 窗口大小为奇数个 */ else { return x_copy[(n - 1) / 2]; }}冒泡排序