python - 寻找噪声信号何时稳定
问题描述
我的数据非常嘈杂,并且随着时间的推移而波动。我想在信号稳定时找到 x。在这张图中,我可以直观地说它介于 1 到 2000 之间。如何在 python 中找到该点?
解决方案
您可以考虑使用滑动窗口查看数据的方差。当方差低于可接受的阈值时,您可以将所有先前的点作为噪声丢弃。容差完全取决于您和您的应用程序,因此您需要自己确定。
import numpy as np
import matplotlib.pyplot as plt
# generate a data set
N = 1000
t = np.linspace(0.1, 2, N)
signal = np.random.randn(N) / np.sqrt(t*0.8)
# create a sliding window view (50% overlap)
chunk_size = 100
chunks = np.lib.stride_tricks.sliding_window_view(signal, chunk_size)[::chunk_size//2]
# take the variance of the windows
var = np.var(chunks, axis=1)
t_var = t[::chunk_size//2][:var.size]
_, ax = plt.subplots()
ax.plot(t, signal)
ax.plot(t_var, var, c='r', linestyle='', marker='o')
plt.show()
推荐阅读
- glm - 具有 Gamma 的广义线性模型
- vb.net - No Sub Main 未找到
- angular - 无法在 lambda 生产应用程序上解码下载的字体
- c# - Prism WPF:如何最小化回调以返回 IDialogResult.Result == Buttonresult.ok
- php - FTP::connection() randomly fails
- php - 理解 PHP Fatal TypeError“必须是实例”学说 symfony 组件项目
- java - ObjectMapper.readTree does not throw IOException on Invalid input
- c# - 从 baseapi 控制器基继承路由到派生控制器
- spring - Spring数据沙发库查询DSL集成
- html - CSS Flex 对齐 3 个 div,顶部 1 和 2,底部 3