如果我有一组规则间隔的样本数据(间距)并且我的一些数据丢失(零)但不是定期丢失,即
可以使用数字信号处理技术来插入丢失的数据吗?
当丢失的数据是每个第 n 个元素时,我只读过 FIR 或 IIR 插值。
存在的数据多于缺失的数据。
插值可以离线完成。
第一个或最后一个数据点可能会丢失。
如果我有一组规则间隔的样本数据(间距)并且我的一些数据丢失(零)但不是定期丢失,即
可以使用数字信号处理技术来插入丢失的数据吗?
当丢失的数据是每个第 n 个元素时,我只读过 FIR 或 IIR 插值。
存在的数据多于缺失的数据。
插值可以离线完成。
第一个或最后一个数据点可能会丢失。
我发现了一种类似于零填充 FFT 插值的方法,但其中丢失的样本可能是非均匀间隔的。我认为它完全可以解决您遇到的问题。该方法在此处描述:
J. Selva,“规则网格中非均匀样本的 FFT 插值”,IEEE Trans。关于信号处理,卷。63,名词。2015 年 6 月 11 日。
代码可在此处获得。
如果您只想有一个工作示例,可以考虑 scipy.interpolate 的功能:
N = 128
n = np.arange(N)
x = np.sin(2*np.pi*n/32)
plt.plot(n, x)
pos = np.random.randint(N, size=(50,))
x_received = np.delete(x, pos)
n_received = np.delete(n, pos)
plt.stem(n_received, x_received)
import scipy.interpolate
interpolated = scipy.interpolate.interp1d(n_received, x_received, bounds_error=False, kind='cubic')
plt.plot(n, interpolated(n), 's')
此代码为 n=0,...,127 生成信号 x。然后,它从中删除一些值,并通过样条三次插值法对缺失值进行插值。看到蓝色垂直线表示接收到的样本,绿色方块表示插值。近似值非常好。
使用修复方法。检查这个问题。修复方法也适用于一维信号。