怎么求出是数据密集区。怎么实现类似图中所示;怎么求出是数据密集区。怎么实现类似图中所示
1条回答 默认 最新
关注 感觉这不是一个数据密度分布问题,而是一个方差问题,即:找出方差较小的一段区间。我的思路是先利用滑动均值滤波,得到相对平滑的曲线,再找出相邻点连续升或降的间隔区间,剩余的就是数据平滑区。下面的代码先构造了一个分段直线,再叠加随机信号模拟题主的数据,然后做窗口宽度为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()
>>> data += (np.random.random(data.size)-0.5)*0.2 >>> plt.plot(data) [<matplotlib.lines.Line2D object at 0x000001DD88BEE608>] >>> plt.show()
>>> w = np.ones(10)/10 >>> data = np.convolve(w, data)[10:-10] >>> plt.plot(data) [<matplotlib.lines.Line2D object at 0x000001DD8880EE48>] >>> plt.show()
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥30 这是哪个作者做的宝宝起名网站
- ¥60 版本过低apk如何修改可以兼容新的安卓系统
- ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
- ¥50 有数据,怎么建立模型求影响全要素生产率的因素
- ¥50 有数据,怎么用matlab求全要素生产率
- ¥15 TI的insta-spin例程
- ¥15 完成下列问题完成下列问题
- ¥15 C#算法问题, 不知道怎么处理这个数据的转换
- ¥15 YoloV5 第三方库的版本对照问题
- ¥15 请完成下列相关问题!