Difference between revisions of "Independent component analysis"
From emboxit
m (NikoSysop moved page Independent compenent analysis to Independent component analysis) |
m (1 revision) |
(No difference)
|
Latest revision as of 16:51, 11 September 2015
Contents
Tutorials
ICA pages
.NET
- This sample application shows how to compute and use Independent Component Analysis (ICA) to perform blind source separation of two mixed sound signals. By default, the application comes with two mixed audio recordings from a sample CNN broadcast
Matlab
- The FastICA package is a free (GPL) MATLAB program that implements the fast fixed-point algorithm for independent component analysis and projection pursuit. It features an easy-to-use graphical user interface, and a computationally powerful algorithm.
- http://www.mathworks.com/matlabcentral/newsreader/view_thread/257124
- http://vis-www.cs.umass.edu/ica.html
- http://cnl.salk.edu/~tony/ica.html
- http://cnl.salk.edu/~tewon/ICA/code.html
Python
- Blind source separation using FastICA, Python source code using FastICA python module
""" ===================================== Blind source separation using FastICA ===================================== An example of estimating sources from noisy data. :ref:`ICA` is used to estimate sources given noisy measurements. Imagine 2 instruments playing simultaneously and 2 microphones recording the mixed signals. ICA is used to recover the sources ie. what is played by each instrument. """ print(__doc__) 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.mixing_ # Get estimated mixing matrix assert np.allclose(X, np.dot(S_, A_.T) + ica.mean_) ############################################################################### # Plot results pl.figure() pl.subplot(3, 1, 1) pl.plot(S) pl.title('True Sources') pl.subplot(3, 1, 2) pl.plot(X) pl.title('Observations (mixed signal)') pl.subplot(3, 1, 3) pl.plot(S_) pl.title('ICA estimated sources') pl.subplots_adjust(0.09, 0.04, 0.94, 0.94, 0.26, 0.36) pl.show()
- So, upon getting working results, I wrote up this little example. This is in Python and requires the MDP (python-mdp in Ubuntu) and Audiolab packages (sudo easy_install scikits.audiolab).
Java
CPP