滤波结果换成用ArrayList<Integer>保存
时间: 2024-04-17 12:25:15 浏览: 97
intent传递ArrayList<T>
好的,如果你想使用 `ArrayList<Integer>` 来保存滤波结果,你只需要对代码进行一些调整即可。下面是修改后的代码示例:
```java
import java.util.ArrayList;
import java.util.Collections;
public class MedianFilter {
public static ArrayList<Integer> medianFilter(ArrayList<Integer> data, int windowSize) {
ArrayList<Integer> filteredData = new ArrayList<>();
int halfWindowSize = windowSize / 2;
for (int i = 0; i < data.size(); i++) {
// 计算当前窗口的起始索引和结束索引
int start = Math.max(0, i - halfWindowSize);
int end = Math.min(data.size() - 1, i + halfWindowSize);
// 获取当前窗口内的数据
ArrayList<Integer> window = new ArrayList<>(data.subList(start, end + 1));
// 对窗口内的数据进行排序
Collections.sort(window);
// 取中位数作为当前位置的滤波结果
int median = window.get(windowSize / 2);
filteredData.add(median);
}
return filteredData;
}
public static void main(String[] args) {
// 示例使用
ArrayList<Integer> pulseData = new ArrayList<>();
pulseData.add(80);
pulseData.add(82);
pulseData.add(85);
pulseData.add(86);
pulseData.add(90);
pulseData.add(91);
pulseData.add(87);
pulseData.add(85);
pulseData.add(82);
pulseData.add(83);
int windowSize = 3; // 窗口大小
ArrayList<Integer> filteredData = medianFilter(pulseData, windowSize);
// 打印滤波后的结果
System.out.println("原始数据:" + pulseData);
System.out.println("滤波后的数据:" + filteredData);
}
}
```
在修改后的代码中,我们将 `ArrayList<Double>` 替换为 `ArrayList<Integer>`,并对相应的数据类型进行调整。其他部分的逻辑保持不变。
希望这次的回答符合你的需求。如果你还有其他问题,请随时提问。
阅读全文