中位滤波算法-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
点击数: 168   打印  添加到收藏   发布时间: 2019-05-06




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





» 相关内容
  VS2008中修改VC使用的目标.net..
  Verilog实现clk计数器的rst边..
  Chart1控件坐标轴范围设定和恢..
  一个二维码生成页面-简洁实用
  AD7656六通道16位逐次逼近型25..
  TTL和232/485电平不分导致串口..
  .net程序中给picturebox增加滚..
  Slave FIFO时TD_init函数常用..
  Android手机App内嵌入web交互..
  薏米仁的功效补气益脾除湿
  vb.net如何杀死目标进程win7-x..
  Try_Catch_Throw的使用方法
  .Net多线程更新UI或窗体控件内..
  单电源光电二极管接法-等效零..
  运放+达林顿管的恒流电路工作..