def find_peaksdata peaks = # 存储波峰位置的列表 intervals = # 存储波峰间隔的列表 for i in range1 lendata-1 if datai datai-1 and datai datai+1 peaksappendi if lenpeaks 1
public class FindPeaks { public static void main(String[] args) { int[] data = {1, 2, 3, 2, 1, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2, 1};
int[] peaks = findPeaks(data);
int[] intervals = findIntervals(peaks);
System.out.print("波峰位置:");
for (int peak : peaks) {
System.out.print(peak + " ");
}
System.out.print("\n波峰间隔:");
for (int interval : intervals) {
System.out.print(interval + " ");
}
}
public static int[] 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);
}
}
int[] result = new int[peaks.size()];
for (int i = 0; i < peaks.size(); i++) {
result[i] = peaks.get(i);
}
return result;
}
public static int[] findIntervals(int[] peaks) {
List<Integer> intervals = new ArrayList<>();
for (int i = 1; i < peaks.length; i++) {
intervals.add(peaks[i] - peaks[i - 1]);
}
int[] result = new int[intervals.size()];
for (int i = 0; i < intervals.size(); i++) {
result[i] = intervals.get(i);
}
return result;
}
原文地址: https://www.cveoy.top/t/topic/iMia 著作权归作者所有。请勿转载和采集!