求一个数组压缩算法!
需求:规定一次波形显示的数据时231个点。算法要求:采集到的数值是可以确定的。10000个点以内的点数都压缩成231个点,比如(采了1W个点,压缩成231显示出来)(5000个点还是压缩成231个点显示出来)(500个点还是压缩成231个点显示出来),传进来的点数是不确定的,不能写死,但是可以确定是在1W以内的点数,
总之就是232-10000指点的点数都压缩成231个点来显示到屏幕上
数学太差了,想了半天这种算法,但是画出来的波形总是和实际上显示的波形不太一样。
有没有大神指点,能有具体参考代码最好了!感激不尽。
10000÷43.3
5000÷21.6
500÷2.16
除数就是要显示的数据读取的间隔
我估计做不好,除非你的10000个样点的波形本来频率就很低,否则,10K采样压成0.2K,波形怎么都不可能像吧? 按周期间隔取点肯定是最简单的。但是也有缺点,就是丢掉的点或许还比较重要。
这个可以学习一下图像的缩放算法,肯定不是间隔几个点取一个点,而是通过对一系列点的运算,得出预期变化趋势后的点。近邻取样、二次线性插值、三次卷积插值、两次近邻取样、三次线性插值、两次三次卷积插值。反正就是一堆名词 调整下数据,再检查波形 这个是有现成的算法的,具体名字我记不太清楚了,大概意思是说,你不知道样本空间有多大,但是要抽取给定的样本并计算平均值。
你可以先构建一个大小为231的数组,先采集前231个然后放入这个数组,一边获取后面的值,一边计数有n个,后面每采集到的一个数据,1/2的概率决定是否替换前面数组中的某个值,这个值可以是随机的。 :)谢谢分享:)
页:
[1]