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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版