android 找出一组数据所有的波峰位置及数字及波峰之间的间隔
要找出一组数据中的所有波峰位置及数字,以及波峰之间的间隔,可以按照以下步骤进行:
- 定义一个空列表
peaks用于存储波峰的位置和数字,定义一个空列表gaps用于存储波峰之间的间隔。 - 遍历数据列表,从第二个元素开始,直到倒数第二个元素结束,对于每个元素
data[i]:- 检查当前元素是否大于其前一个元素
data[i-1]和后一个元素data[i+1],如果是,则将该元素及其索引(i, data[i])添加到peaks列表中。
- 检查当前元素是否大于其前一个元素
- 遍历波峰列表
peaks,从第二个波峰开始,计算当前波峰位置与前一个波峰位置之间的间隔,将其添加到gaps列表中。 - 返回
peaks列表和gaps列表。
以下是一个示例代码:
List<Integer> findPeaksAndGaps(List<Integer> data) {
List<Integer[]> peaks = new ArrayList<>();
List<Integer> gaps = new ArrayList<>();
for (int i = 1; i < data.size() - 1; i++) {
if (data.get(i) > data.get(i-1) && data.get(i) > data.get(i+1)) {
Integer[] peak = {i, data.get(i)};
peaks.add(peak);
}
}
for (int i = 1; i < peaks.size(); i++) {
int gap = peaks.get(i)[0] - peaks.get(i-1)[0];
gaps.add(gap);
}
return peaks;
}
注意,上述代码使用了 List<Integer> 来表示数据列表,其中的元素为整数。在实际使用时,你需要根据具体情况来替换为适合的数据类型
原文地址: https://www.cveoy.top/t/topic/iMhl 著作权归作者所有。请勿转载和采集!