[原创]数字信号处理中的卷积网络深度学习猜想(2) - 信号主周期估计算法 - 一种快速实现

转载请注明出处,Writer:Zhonlihao钟硕 @ 20190713

https://blog.csdn.net/xeonmm1

 

全尺度卷积算法的时间复杂度

全尺度卷积虽然有非常强的细节提取能力,但其是以大量增加运算量为代价的,下面的伪代码给出了其基本的运算过程:

for i = 尺度遍历 n 

    for j = 时域遍历 k

        for m = 特征遍历 f

            卷积核操作;

        end

    end

end

一个没有经过优化的全尺度卷积算法的算法时间复杂度大概是O(n * k * f) ~O(n^3) 这无论对于电脑还是嵌入式cpu都是比较慢的,不利于算法的实时实现,细心分析下来,我们可以发现如果想实现快速算法,可以从特征的组合出发去实现它们特定的卷积操作,这样就会省下很多无谓的卷积扫描的时间耗费。

 

一种快速全卷积算法

如上图所示,把机械的扫描转化为对特征点事件的描述,从2个特征点开始组合到全部特征点的尺度,这是一个三角级别的算法展开:

for i = 特征点个数遍历 2~n

    for j = 起始特征点遍历 1 : n - i

        for k = 特征点组内元素遍历 j:j+i

            卷积核扫描操作;

        end

    end

end

譬如m = 6,那么这个事件展开就是

1 2,2 3,3 4,4 5,5 6

1 2 3,2 3 4,3 4 5 ,4 5 6

1 2 3 4,2 3 4 5,3 4 5 6

1 2 3 4 5, 2 3 4 5 6

1 2 3 4 5 6

这样就把较大量的O(n^3)转化为一个小量的O(n^3)操作;下面说一下卷积核扫描操作的变化:

如上图所示选取f1,f2两点特征为这次分析的基本事件,s1,s2是其邻近特征,那么,第一首先要确保窗的大小最小为f2-f1距离触发启动这个事件,其次,窗的最大长度不能超过s2-s1以免把邻近点纳入形成了新的一个组合事件,滑动时窗口的右端点必须碰到f2,如果左端点离开f1,则结束整个扫描过程,因此这个方法可以从本质上省去很多无谓的过渡时间浪费。

 

算法时间对比

以下是旧算法在matlab中的时间消耗:

以下是新算法在matlab中的时间消耗:

大概快了30倍以上,得出的数据统计基本一致。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值