传感数据分析——中值滤波和均值滤波


前言

文章传感数据分析——Entropy Weight Method (熵权法)中叙述了熵权法的基本步骤。
之前几期文章已经叙述了信息熵权法TOPSIS熵权法近似熵权法样本熵权法模糊熵权法排列熵权法
本节将叙述在传感数据中基于滑动窗口的中值滤波和均值滤波,并基于Python实现。
废话不多说,直接上代码。


本文正文内容

一、运行环境

系统: Windows 10 / Ubuntu 20.04
编程语言: Python 3.8
文本编译器: Vscode
所需库:matplotlib >= 2.2.2 , numpy >= 1.19.5

二、Python实现

代码如下(示例):

import numpy as np
import matplotlib.pyplot as plt


def MidFilter(data, window_size):
        """
        中值滤波算法
        :param data: 一维数据
        :param window_size: 窗口大小
        :return: filtered_data: 滤波后的数据
        """
        half_window = window_size // 2
        if half_window <= 1:
            return data
        filtered_data = np.copy(data)
        # 移动窗口向右滑动,直至到最后
        for i in range(half_window, len(data) - half_window):
            window = filtered_data[i - half_window: i + half_window + 1]
            filtered_data[i] = np.median(window)
        return filtered_data

def MeanFilter(data, window_size):
    """
    均值滤波算法
    输入:
    data: 一维数据
    :param window_size: 窗口大小
    :return: filtered_data: 滤波后的数据
    """

    half_window = window_size // 2
    if half_window <= 1:
        return data
    filtered_data = np.copy(data)
    # 移动窗口向右滑动,直至到最后
    for i in range(half_window, len(data) - half_window):
        window = filtered_data[i - half_window: i + half_window + 1]
        filtered_data[i] = np.mean(window)
    return filtered_data

if __name__ == '__main__':
    # 导入数据
    data= np.random.rand(1000)
    # 保存路径
    save_path = './result/'
    # 测试数据

    data_filter_mid = MidFilter(data, 10)
    data_filter_mean = MeanFilter(data, 10)
    # 绘图并保存
    plt.figure(figsize=(16,9))
    plt.plot(data)
    plt.plot(data_filter_mid)
    plt.plot(data_filter_mean)
    plt.legend(['Original', 'Mid-Filter','Mean-Filter'])
    plt.title("Filters Test", fontsize=18)
    plt.savefig(save_path + "Filter_test.png")
    plt.show()

结果图
在这里插入图片描述
可以发现,原数据噪声较多,中值滤波后相对平滑,均值滤波后效果较差,对于本数据情况,中值滤波更加合适。


总结

以上就是本节对传感数据进行滤波算法的内容,本文简单介绍了传感数据分析中值滤波和均值滤波Python的实现,具体见资源传感数据分析-中值滤波和均值滤波,后续还会持续更新本系列,收藏过100,后台联系我,我会免费将全部相关的代码都发给你。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐