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;
}
def find_peaksdata peaks = # 存储波峰位置的列表 intervals = # 存储波峰间隔的列表 for i in range1 lendata-1 if datai datai-1 and datai datai+1 peaksappendi if lenpeaks 1

原文地址: https://www.cveoy.top/t/topic/iMia 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录