谁有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));
}
一般是排序,去掉最大和最小,求均值,这是我们公司的温度采集滤波