2013年01月02日 星期三 17:51
原代码如下:
引自:http://scikit-learn.org/0.11/auto_examples/decomposition/plot_ica_blind_source_separation.html
---------------------------------------------------------
import numpy as np
import pylab as pl
from sklearn.decomposition import FastICA
################################################
# Generate sample data
np.random.seed(0)
n_samples = 2000
time = np.linspace(0, 10, n_samples)
s1 = np.sin(2 * time) # Signal 1 : sinusoidal signal
s2 = np.sign(np.sin(3 * time)) # Signal 2 : square signal
S = np.c_[s1, s2]
S += 0.2 * np.random.normal(size=S.shape) # Add noise
S /= S.std(axis=0) # Standardize data
# Mix data
A = np.array([[1, 1], [0.5, 2]]) # Mixing matrix
X = np.dot(S, A.T) # Generate observations
# Compute ICA
ica = FastICA()
S_ = ica.fit(X).transform(X) # Get the estimated sources
A_ = ica.get_mixing_matrix() # Get estimated mixing matrix
assert np.allclose(X, np.dot(S_, A_.T))
如果我的实验采集的信号是一维,S = S1 + S2 ,在只有S的情况下如何分离出S1和S2?
2013年01月03日 星期四 11:45
如果有两个信号源的话,得有两组不同混合方式的采集数据才能分离吧。
Zeuux © 2024
京ICP备05028076号