微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 谁有ADC采集数据后的滤波程序?

谁有ADC采集数据后的滤波程序?

时间:10-02 整理:3721RD 点击:
谁有ADC采集数据后的滤波程序?

自己写写均值滤波和限幅滤波应该不难,其他滤波器要求具有数字信号处理的知识!

最简单的 去掉一个最大值 去掉一个最小值 剩下的取平均值

void SortArrayExtreme(u16 Array[], const u32 ArraySize,
                      const u32 SortHeadSize, const u32 SortTailSize)
{
    u32 i, j;
    u16 temp;
    for (i = 0; i < SortTailSize; i++)
    {
        for (j = 0; j < ArraySize - i - 1; j++)
        {
            if (Array[j] > Array[j+1])
            {
                temp = Array[j];
                Array[j] = Array[j+1];
                Array[j+1] = temp;
            }
        }
    }
    for (i = 0; i < SortHeadSize; i++)
    {
        for (j = ArraySize - SortTailSize - 1 ; j > i; j--)
        {
            if (Array[j - 1] > Array[j])
            {
                temp = Array[j - 1];
                Array[j - 1] = Array[j];
                Array[j] = temp;
            }
        }
    }
}
u32 GetAverage(u16 Array[], const u32 ArraySize,
               const u32 DelHeadSize, const u32 DelTailSize)
{
    u32 sum = 0;
    if ((DelHeadSize + DelTailSize) >= ArraySize)
    {
        return 0;
    }
    for (long i = DelHeadSize; i < ArraySize - DelTailSize; i++)
    {
        sum += Array[i];
    }
    return(sum / (ArraySize - DelHeadSize - DelTailSize));
}

u32 GetDelExtremeAndAverage(u16 Array[], const u32 ArraySize,
                            const u32 SortHeadSize, const u32 SortTailSize)
{
    SortArrayExtreme(Array, ArraySize, SortHeadSize, SortTailSize);
    return(GetAverage(Array, ArraySize, SortHeadSize, SortTailSize));
}
一般是排序,去掉最大和最小,求均值,这是我们公司的温度采集滤波

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top