php – 根据密度过滤数组
发布时间:2020-12-13 13:07:16 所属栏目:PHP教程 来源:网络整理
导读:我有一个样本图,如下面的..,我用数组X中的(x,y)值集合绘制. http://bubblebird.com/images/t.png 如您所见,图像的峰值密度在4000到5100之间 我的确切问题是,我可以通过编程方式找到图表最密集的范围吗? ie ..使用Array X如何找到此图密集的范围? 对于这个
我有一个样本图,如下面的..,我用数组X中的(x,y)值集合绘制.
http://bubblebird.com/images/t.png 如您所见,图像的峰值密度在4000到5100之间 我的确切问题是,我可以通过编程方式找到图表最密集的范围吗? ie ..使用Array X如何找到此图密集的范围? 假设为简单起见,阵列只有一个密集区域. 如果您可以建议伪代码/代码,请感谢.
您可以在移动窗口上使用信号的方差.
下面是一个示例(参见附图,其中测试信号为红色,窗口方差为绿色,滤波后的信号为蓝色): : 测试信号生成: import numpy as np X = np.arange(200) - 100. Y = (np.exp(-(X/10)**2) + np.exp(-((np.abs(X)-50.)/2)**2)/3.) * np.cos(X * 10.) 计算移动窗口方差: window_length = 30 # number of point for the window variance = np.array([np.var(Y[i-window_length / 2.: i+window_length/2.]) for i in range(200)]) 得到方差高的指数(这里我选择的标准方差优于最大方差的一半……你可以根据你的情况调整它): idx = np.where(variance > 0.5 * np.max(variance)) X_min = np.min(X[idx]) # -14.0 X_max = np.max(X[idx]) # 15.0 或过滤信号(将方差设为零) Y_modified = np.where(variance > 0.5 * np.max(variance),Y,0) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |