需求:规定一次波形显示的数据时231个点。算法要求:采集到的数值是可以确定的。10000个点以内的点数都压缩成231个点,比如(采了1W个点,压缩成231显示出来)(5000个点还是压缩成231个点显示出来)(500个点还是压缩成231个点显示出来),传进来的点数是不确定的,不能写死,但是可以确定是在1W以内的点数,
总之就是232-10000指点的点数都压缩成231个点来显示到屏幕上
数学太差了,想了半天这种算法,但是画出来的波形总是和实际上显示的波形不太一样。
有没有大神指点,能有具体参考代码最好了!感激不尽。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
unsigned char Compressed_array(unsigned char *array,unsigned char Len,unsigned char *array_New)
{
unsigned int Multiple;
unsigned short int i;
unsigned short int Cnt;
if(Len>10000||Len<232)return flase;//³¤¶ÈÅжÏ
Multiple=(unsigned int)Len*10/231; //µÃ³ö±¶Êý
for(i=0;i<Len*10;) //¿ªÊ¼Ñ¹Ëõ
{
if(Multiple<20)//±¶Êý²»³¬¹ý2
{
array_New[i/10]=array[Cnt/10];
i+=10;
Cnt+=Multiple;
}
else //Èç¹û±¶Êý´óÓÚ2
{
if(i%(Multiple)==0)//ÿ¹ý±¶Êý³éÈ¡Ò»¸öÖµ
{
array_New[Cnt++]=array[i/10];
}
i++;
}
if(Cnt>=231)return true;
}
}
精度你自己去优化咯
一周热门 更多>