【发布时间】:2017-02-13 06:55:39
【问题描述】:
我必须创建 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 = 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 个具有相似平均功率的高斯白噪声吗?
【问题讨论】:
标签: python signal-processing pca