android 找出一组数据中所有的波峰及波峰之间的间隔
你可以使用以下算法来找出一组数据中的波峰及波峰之间的间隔:
- 定义一个空的动态数组 peaks 来存储波峰的索引。
- 遍历数据数组,从第二个元素开始,直到倒数第二个元素。
- 对于每个元素,检查它是否比它前面和后面的元素都大,如果是,则将其索引添加到 peaks 数组中。
- 定义一个空的动态数组 intervals 来存储波峰之间的间隔。
- 遍历 peaks 数组,从第二个元素开始,直到最后一个元素。
- 对于每个元素,计算它与前一个元素之间的距离,并将结果添加到 intervals 数组中。
- 返回 peaks 数组和 intervals 数组。
以下是一个示例代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int[] data = {1, 2, 3, 2, 1, 4, 5, 4, 3, 2, 1};
List<Integer> peaks = findPeaks(data);
List<Integer> intervals = findIntervals(peaks);
Log.d("Peaks", peaks.toString());
Log.d("Intervals", intervals.toString());
}
private List<Integer> findPeaks(int[] data) {
List<Integer> peaks = new ArrayList<>();
for (int i = 1; i < data.length - 1; i++) {
if (data[i] > data[i-1] && data[i] > data[i+1]) {
peaks.add(i);
}
}
return peaks;
}
private List<Integer> findIntervals(List<Integer> peaks) {
List<Integer> intervals = new ArrayList<>();
for (int i = 1; i < peaks.size(); i++) {
int interval = peaks.get(i) - peaks.get(i-1);
intervals.add(interval);
}
return intervals;
}
}
在上面的示例代码中,我们使用了一个简单的数据数组 {1, 2, 3, 2, 1, 4, 5, 4, 3, 2, 1} 来演示算法的工作原理。该数据数组中的波峰是 3, 5,波峰之间的间隔是 2, 3。你可以根据你的实际需求修改数据数组
原文地址: https://www.cveoy.top/t/topic/iMhU 著作权归作者所有。请勿转载和采集!