栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

swift实现python中的spicy.signal.find

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

swift实现python中的spicy.signal.find

swift中无寻找信号峰值函数,自己写了一个,可以检测固定阈值和距离间隔的峰值索引。

    func findPeaks(velocity_data:Array, height:Double, distance:Double) -> Array{
        
        //筛选所有大于height的点
        var indexList1:Array = []
        for index in 0..= height{
                indexList1.append(index)
            }
        }
        
        //筛选连续索引中的最大值点
        let indexSet = IndexSet(indexList1)
        let rangeView = indexSet.rangeView
        let rangeViewArray = rangeView.map { Array($0.indices) }
        var indexList2:Array = []
        for range in rangeViewArray{
            var maxData = height
            var index = 0
            for data in range{
                if velocity_data[data] >= maxData{
                    maxData = velocity_data[data]
                    index = data
                }
            }
            indexList2.append(index)
        }
        
        //筛选满足最小距离的点
        var keep:Array = Array(repeating: 1, count: indexList2.count)
        let priority = indexList2.map{velocity_data[$0]}
        let priorityToPosition = priority.enumerated().sorted(by: {$0.element < $1.element
        }).map{$0.offset}
        for i in stride(from: indexList2.count-1, through: 0, by: -1){
            let j:Int = priorityToPosition[i]
            if keep[j] == 0{
                continue
            }
            
            var k:Int = j-1
            while 0<=k && indexList2[j] - indexList2[k] < Int(distance){
                keep[k] = 0
                k -= 1
            }
            k = j+1
            while k = []
        for i in 0..
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008283.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号