您可以对输入数组应用低通滤波器,以消除小波动,然后在滤波数据中找到峰值.最简单的例子可能是"boxcar"滤波器,其中输出值是距当前阵列位置一定距离内的输入值的总和.在伪代码中,它看起来像这样:
for i = 0, samplecount-1
if (i < boxcar_radius) or (i >= (samplecount - boxcar_radius)) then
filtered_data[i] = 0 // boxcar runs off edge of input array, don't use
else
filtered_data[i] = 0
for j = i-boxcar_radius, i+boxcar_radius
filtered_data[i] = filtered_data[i] + input_data[j]
endfor
endif
endfor
Run Code Online (Sandbox Code Playgroud)
如果您对"高原"的宽度有所了解,可以选择箱车半径(约为预期平台宽度的一半)来检测适当比例的特征.
您需要首先定义“小”的含义。比如说,围绕最大值的“小”波动被定义为最大值 ± ϵ 范围内的任何值。然后,很容易识别平台期。
遍历数据以确定最大值,然后进行第二次遍历以识别最大值 ± ϵ 范围内的所有值。
归档时间: |
|
查看次数: |
1616 次 |
最近记录: |