[STM32F1] 排序算法速度

[复制链接]
1203|9
 楼主| sunwave 发表于 2017-1-3 15:37 | 显示全部楼层 |阅读模式
在STM32F103中采用DMA采集3个通道的数据,放在数组AD_VALUE[474][3]中,然后想滤波后求出均值。现在的问题是,若直接求和,然后除以数据个数474,时间上可以满足要求。若想排序最大的20个数据,最小的20个数据,就需要对原来的数组进行排序才可以,时间就超过指标要求了。有人说可以局部排序,就是只是将数据中的最大20个数据去掉,最小的20个数据去掉,而原来的数据还是乱序的(可以满足要求,因为只需求和就可以了),请问各位,有没有这方面的算法可以介绍一下?多谢了!
JLennon 发表于 2017-1-3 17:16 | 显示全部楼层
598330983 发表于 2017-1-3 17:18 | 显示全部楼层
直接用现成的排序算法就行了。
mmuuss586 发表于 2017-1-3 18:27 | 显示全部楼层
本来就是矛盾的;

你要实现什么效果呢?
测平均电压吗?
xxzouzhichao 发表于 2017-1-3 19:28 | 显示全部楼层
库函数里好像有个qsort函数可以快速排序
 楼主| sunwave 发表于 2017-1-5 14:35 | 显示全部楼层
mmuuss586 发表于 2017-1-3 18:27
本来就是矛盾的;

你要实现什么效果呢?

就是求平均电压,但想把数据中的几个最大值和最小值剔除后,再求平均
 楼主| sunwave 发表于 2017-1-5 14:36 | 显示全部楼层
我只需要剔除数据序列中的几个最大的和几个最小的,并不需要数据序列完美排序。
LyCrystal 发表于 2017-1-5 22:27 | 显示全部楼层
直接用现有的排序方法就行
LyCrystal 发表于 2017-1-5 22:30 | 显示全部楼层
sunwave 发表于 2017-1-5 14:36
我只需要剔除数据序列中的几个最大的和几个最小的,并不需要数据序列完美排序。 ...

如果只需要最提取几个最小的和最大的就维护两个序列;遍历数据序列,将小值和大值放入对应的序列;
quansea 发表于 2017-1-9 18:28 | 显示全部楼层
学习支持!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

154

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部