你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32G4 滑窗滤波

[复制链接]
XH750507 提问时间:2023-9-10 19:45 / 未解决

定时器定时采样,中断函数处理滑窗的时间超过了定时器的时间。

1 for(i=0;i<512-1;i++){ADC1_SLID1[0][i]=ADC1_SLID1[0][i+1];} ADC1_SLID1[0][512-1]=ADC1_DMA[0]-2047.f;

2 memmove(ADC1_SLID1[0],ADC1_SLID1[0]+1,(512-1)*sizeof(float)); ADC1_SLID1[0][512-1]=ADC1_DMA[0]-2047.f;

这2个的运行时间差别不大。请问:DSP库中有类似的函数么?可以缩短时间。地址大部分是重叠的。

收藏 评论4 发布时间:2023-9-10 19:45

举报

4个回答
yr 回答时间:2023-9-10 23:23:50

把数组看成环形存储空间,每次剔除出和更新数据发生在某个index,不是物理空间上的第一个格子,这样移动数组下标,就可以跟踪更新的位置,如果是滑窗滤波,每次计算的是进入和剔除数据的差值而已,其他的511个点之和还是不变的,如果是均方根,一样的思想,要推导一下,进入和剔除数据到底要怎么运算才遵循均方根差值变化,把这部分求出,跟另外的511个均方根融合,就可以减少计算量

yr 回答时间:2023-9-10 21:20:12

每次更新一个数据,为什么要搬运大量的数据呢?利用数组的下标仅更新一个数据不香吗?比如当前准备剔除的数据index=10,那么新进来的数据存如index=10,同时index往后移动一格,算滑窗的sum,也不用每次都算512个点的和,只要累计新进和剔除数据的差就是了。

XH750507 回答时间:2023-9-10 21:59:56
yr 发表于 2023-9-10 21:20
[md]每次更新一个数据,为什么要搬运大量的数据呢?利用数组的下标仅更新一个数据不香吗?比如当前准备剔除 ...

每次踢掉第一个数据 依次递推 新进的数据放最后一个  实际是需要测量三相交流电的三相相电压 用均方根

还是没太理解您的方法 您能推荐一个示例么? 感谢

XH750507 回答时间:2023-9-11 07:47:39

yr 发表于 2023-9-10 23:23
把数组看成环形存储空间,每次剔除出和更新数据发生在某个index,不是物理空间上的第一个格子,这样移 ...

[md]感谢 已经明白您的思想了 受教了

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版