Python 用主成分分析去相关噪声
我必须创建13个相互完全不相关的高斯白噪声。 我被告知PCA可以实现它,所以我搜索了一些可以在python中使用的信息和工具。 我使用sklearn的PCA模块来执行PCAPython 用主成分分析去相关噪声,python,signal-processing,pca,Python,Signal Processing,Pca,我必须创建13个相互完全不相关的高斯白噪声。 我被告知PCA可以实现它,所以我搜索了一些可以在python中使用的信息和工具。 我使用sklearn的PCA模块来执行PCA import numpy as np from sklearn.decomposition import PCA n = 13 # number of completely decorrelated noises ms = 10000 #duration of noise in milli-seconds fs = 441
import numpy as np
from sklearn.decomposition import PCA
n = 13 # number of completely decorrelated noises
ms = 10000 #duration of noise in milli-seconds
fs = 44100 # sampling rate
x = np.random.randn(int(np.ceil(fs*ms/1000)),n)
# calculate the correlation between any two noise
for i in range(n):
for j in range(n):
omega = np.corrcoef(x[:,i],x[:,j])[0,1]
print omega
# perform PCA
pca = PCA(n_components=n)
pca.fit(x)
y = pca.transform(x)
for i in range(n):
for j in range(n):
omega_new = np.corrcoef(y[:,i],y[:,j])[0,1]
print omega_new
PCA前的相关系数约为0.0005~0.0014,PCA后的相关系数约为1e-16。
我对PCA不太了解,所以我不确定我是否做对了。
此外,在执行PCA变换后,这些新数据集是否仍然是高斯白噪声?我将规范化每个噪声,使其最大振幅为0.999,然后再将其写入波形文件。我还能得到13个平均功率相近的高斯白噪声吗?我可能在做一个吸管,但这里有一个大大简化的问题:如果我平均两个高斯噪声,我会得到高斯噪声吗 如果我们分离出新的噪声,它无疑是高斯噪声。如果我们假设精确的计算(没有浮点错误),我相信新的噪声无法与新产生的噪声区分开来 然而,如果我们把它和我们平均的一个或两个噪声联系起来看,很明显这是它们的平均值 我不确定PCA到底是如何工作的,但这种转换在本质上似乎也是线性的 TBH,我对PCA了解不够,无法对您的情况发表评论,但我希望进一步的编辑将有助于扩展此答案,以适合您的问题