python中用非期望信号代替期望符号的lms滤波器

2024-09-28 23:40:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一个过滤器(最好是LMS的)在python中过滤噪声的信号+噪声音频文件。基本上我会测量被噪声污染的主信号。以及只包含噪音的文件(大部分)。代码应该过滤掉被噪声污染的主信号中的噪声。你知道吗

我试过adaptilt和padasip库。然而,这些滤波器需要一个信号+噪声输入和一个目标输入。我只有一个信号+噪声输入和不需要的目标输入。你知道吗

import numpy as np
import matplotlib.pylab as plt
import padasip as pa 

# creation of data
N = 500
x = np.random.normal(0, 1, (N, 4)) # input matrix
v = np.random.normal(0, 0.1, N) # noise
d = 2*x[:,0] + 0.1*x[:,1] - 4*x[:,2] + 0.5*x[:,3] + v # target

# identification
f = pa.filters.FilterLMS(n=4, mu=0.1, w="random")
y, e, w = f.run(d, x)

# show results
plt.figure(figsize=(15,9))
plt.subplot(211);plt.title("Adaptation");plt.xlabel("samples - k")
plt.plot(d,"b", label="d - target")
plt.plot(y,"g", label="y - output");plt.legend()
plt.subplot(212);plt.title("Filter error");plt.xlabel("samples - k")
plt.plot(10*np.log10(e**2),"r", label="e - error [dB]");plt.legend()
plt.tight_layout()
plt.show()

上面的代码使用a目标来执行LMS算法。 有没有一个库或方法来编码LMS信号只有2个输入,噪声+信号和噪声?你知道吗


Tags: 代码import目标信号plotasnpplt