对轨迹数据去噪的代码实例
时间: 2023-05-16 20:06:18 浏览: 80
以下是一个对轨迹数据进行去噪的 Python 代码示例:
```python
import numpy as np
from scipy import signal
def denoise_trajectory(traj, window_size=11, polyorder=2):
"""
对轨迹数据进行去噪处理
:param traj: 轨迹数据,格式为 (n, 2) 的 numpy 数组,n 表示轨迹点的个数,2 表示每个点的坐标数
:param window_size: 滑动窗口大小,默认为 11
:param polyorder: 拟合多项式的阶数,默认为 2
:return: 去噪后的轨迹数据,格式与输入相同
"""
x = traj[:, 0]
y = traj[:, 1]
b, a = signal.butter(3, 0.05)
x_filt = signal.filtfilt(b, a, x)
y_filt = signal.filtfilt(b, a, y)
x_poly = signal.savgol_filter(x_filt, window_size, polyorder)
y_poly = signal.savgol_filter(y_filt, window_size, polyorder)
return np.column_stack((x_poly, y_poly))
```
这个函数使用了信号处理库 scipy 中的一些函数,包括 Butterworth 滤波器、Savitzky-Golay 滤波器等。它的基本思路是先使用 Butterworth 滤波器对原始轨迹数据进行低通滤波,去除高频噪声;然后再使用 Savitzky-Golay 滤波器对滤波后的数据进行多项式拟合,得到平滑的轨迹曲线。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)