def rts_smooth(data, window_size): data = np.array(data) m, n = data.shape smoothed_data = np.copy(data) # 创建一个与原数组相同的副本,用于存储平滑后的数据 # 遍历每一列 for j in range(n): # 使用原数据填充每一列首尾的窗口大小一半的位置 fill_value = np.concatenate((data[0, j] * np.ones(window_size // 2), data[:, j], data[-1, j] * np.ones(window_size // 2))) # 遍历每一行 for i in range(window_size // 2, m + window_size // 2): # 取窗口内的数据进行RTS平滑处理 weights = np.abs(np.arange(-window_size // 2, window_size // 2 + 1) / (window_size - 1)) smoothed_data[i - window_size // 2, j] = np.sum(fill_value[i - window_size // 2:i + window_size // 2 + 1] * weights) / np.sum(weights) return smoothed_data 示例用法 data = pd.read_csv(r'E:\PycharmProjects\pythonProject\stage2\数据预处理\2 快速傅里叶变换\fft\Learning_set\Bearing1_1.csv', header=None, on_bad_lines=None) print(data.shape) window_size = 3 smoothed_data = rts_smooth(data, window_size) print(smoothed_data.shape)以上代码不在平滑前填充,在平滑后用原来的值替换掉首尾的0值
时间: 2024-04-11 16:28:19 浏览: 145
data_smoothing:数据平滑方法的演示,尤其是Lowess和B-Spline
你可以在 `rts_smooth` 函数中添加以下代码来替换平滑后填充的首尾0值:
```python
# 替换首尾的0值
smoothed_data[:window_size//2, :] = data[:window_size//2, :]
smoothed_data[-window_size//2:, :] = data[-window_size//2:, :]
```
将以上代码添加到 `rts_smooth` 函数的最后一行 `return smoothed_data` 前面即可。这样就会使用原始数据来替换平滑后的首尾0值。
阅读全文