你可以使用以下算法来找出一组数据中的波峰及波峰之间的间隔:

  1. 定义一个空的动态数组 peaks 来存储波峰的索引。
  2. 遍历数据数组,从第二个元素开始,直到倒数第二个元素。
  3. 对于每个元素,检查它是否比它前面和后面的元素都大,如果是,则将其索引添加到 peaks 数组中。
  4. 定义一个空的动态数组 intervals 来存储波峰之间的间隔。
  5. 遍历 peaks 数组,从第二个元素开始,直到最后一个元素。
  6. 对于每个元素,计算它与前一个元素之间的距离,并将结果添加到 intervals 数组中。
  7. 返回 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。你可以根据你的实际需求修改数据数组

android 找出一组数据中所有的波峰及波峰之间的间隔

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

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