Python和科学计算认证群组  - 讨论区

标题:请斑竹帮忙看看一个ICA的例子

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变成2维才能用ICA进行处理?

如果我的实验采集的信号是一维,S = S1 + S2 ,在只有S的情况下如何分离出S1和S2?

 

2013年01月03日 星期四 11:45

如果有两个信号源的话,得有两组不同混合方式的采集数据才能分离吧。

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号