贝力二十 2021-10-20 10:02 采纳率: 50%
浏览 14
已结题

怎么求出是数据密集区。怎么实现类似图中所示;怎么求出是数据密集区。怎么实现类似图中所示

img

怎么求出是数据密集区。怎么实现类似图中所示;怎么求出是数据密集区。怎么实现类似图中所示

  • 写回答

1条回答 默认 最新

  • 天元浪子 Python领域优质创作者 2021-10-20 11:07
    关注

    感觉这不是一个数据密度分布问题,而是一个方差问题,即:找出方差较小的一段区间。我的思路是先利用滑动均值滤波,得到相对平滑的曲线,再找出相邻点连续升或降的间隔区间,剩余的就是数据平滑区。下面的代码先构造了一个分段直线,再叠加随机信号模拟题主的数据,然后做窗口宽度为10的滑动均值,结果显示,和最初的分段直线非常接近。

    >>> import numpy as np
    >>> import matplotlib.pyplot as plt
    >>> a = np.arange(0, 0.5, 0.01)
    >>> b = np.arange(0.5, 1, 0.01)
    >>> c = np.arange(1, 3, 0.01)
    >>> d = np.arange(3, 3.5, 0.01)
    >>> e = np.arange(3.5, 5, 0.01)
    >>> f = np.arange(5, 5.5, 0.01)
    >>> g = np.arange(5.5, 7, 0.01)
    >>> A = 2*a + 10
    >>> B = -2*b + 12
    >>> C = np.ones_like(c)*10
    >>> D = -2*d + 16
    >>> E = np.ones_like(e)*9
    >>> F = 2*f - 1
    >>> G = np.ones_like(g)*10
    >>> data = np.hstack((A,B,C,D,E,F,G))
    >>> plt.plot(data)
    [<matplotlib.lines.Line2D object at 0x000001DD8884EE48>]
    >>> plt.show()
    

    img

    >>> data += (np.random.random(data.size)-0.5)*0.2
    >>> plt.plot(data)
    [<matplotlib.lines.Line2D object at 0x000001DD88BEE608>]
    >>> plt.show()
    

    img

    >>> w = np.ones(10)/10
    >>> data = np.convolve(w, data)[10:-10]
    >>> plt.plot(data)
    [<matplotlib.lines.Line2D object at 0x000001DD8880EE48>]
    >>> plt.show()
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月2日
  • 已采纳回答 10月25日
  • 创建了问题 10月20日

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!