中位滤波算法-net版VB


中位数滤波算法在对慢速,偶然因素引起的脉冲干扰的信号滤波效果比较突出. 克服大脉冲干扰的数字滤波法.克服由仪器外部环境偶然因素引起的突变性扰动或仪器内部不稳定引起误码等造成的尖脉冲干扰,是仪器数据处理的第一步。中位值滤波是一种典型的非线性滤波器,它运算简单,在滤除脉冲噪声的同时可以很好地保护信号的细节信息。
      A、方法: 连续采样N次(N取奇数) 把N次采样值按大小排列(多采用冒泡法) 取中间值为本次有效值
      B、优点: 能有效克服因偶然因素引起的波动(脉冲)干扰
      C、缺点: 对流量、速度等快速变化的参数不宜
      D、 适用范围: 对温度、液位的变化缓慢的被测参数有良好的滤波效果

网上间的比较多的是C语言版的中位滤波,这里给出.net版的中位滤波。

 Public Function Smooth_Data(ByVal raw_dt() As Double, ByVal filter_len As Integer) As Double()

        '中值滤波法!  '中位值平均滤波法(防脉冲干扰平均滤波法) 去除偶尔的干扰脉冲有效!

        Dim sss(raw_dt.Count) As Double '滤波后的数据

        Dim tmp(0 To filter_len - 1) As Double

        For i = 0 To raw_dt.Count - filter_len

            For j = 0 To filter_len - 1
                tmp(j) = raw_dt(i + j)
            Next

            Array.Sort(tmp)

            If filter_len Mod 2 = 0 Then  '如果滤波长度是偶数则,取中间2值的平均

                sss(i) = (tmp(Math.Floor(filter_len / 2)) + tmp(Math.Floor(filter_len / 2) + 1)) * 0.5  '取排序后的中位值
            Else  '如果滤波长度是奇数,则直接取中间值

                sss(i) = tmp(Math.Floor(filter_len / 2))  '取排序后的中位值,长度为21个数据的中位

            End If

        Next

        Return sss

    End Function
点击数: 300   打印  添加到收藏   发布时间: 2019-05-06




上一篇:麦克风的负DB详细解释
下一篇:DC-005插座的切换供电功能





» 相关内容
  中位滤波算法-net版VB
  麦克风的负DB详细解释
  MD5加密的一段代码
  滤波函数增强版
  Matlab模拟PID方法-推荐
  Matlab强制拟合函数过零方法
  清空USB FX2LP FIFO缓冲方法
  Savgol萨维基购耳滤波方法-MAT..
  CRC8校验函数通用版VC
  VS2008中修改VC使用的目标.net..
  Verilog实现clk计数器的rst边..
  Chart1控件坐标轴范围设定和恢..
  一个二维码生成页面-简洁实用
  AD7656六通道16位逐次逼近型25..
  TTL和232/485电平不分导致串口..