01 March 2015

Maximum Noise Fraction

Función para matlab que calcula Maximum Noise Fraction de un conjunto de variables mixadas. En este script la matriz de entrada es un conjunto de señales del mismo largo ordenadas por columnas que fueron mezcladas de forma desconocida. La salida son dos matrices, Phi, la matriz de transformación de las señales originales, e Basis, las señales bases que forman la mezcla.

El método es basado en el paper A SOLUTION PROCEDURE FOR BLIND SIGNAL SEPARATION USING THE MAXIMUM NOISE FRACTION APPROACH: ALGORITHMS AND EXAMPLES

Link para download bit.ly/1N6ukSf

function [Phi,Basis] = MaximumNoiseFraction(X)
[m, n] = size(X);
% 1. Estimate the covariance of the noise.
dX = zeros(m,n);
for i=1:(m-1)
    dX(i,:) = X(i,:) - X(i+1,:);
end
% Take the eigenvector expansion of the covariance of dX
[U1,S1,V1] = svd(dX'*dX);
% Whiten the original data
wX = X*U1*inv(sqrt(S1));
% Compute the eigenvector expansion of the covariance of wX
[U2,S2,V2] = svd(wX'*wX);
% Define Phi
Phi = U1*inv(sqrt(S1))*V2;
% Compute the Maximum noise fraction basis vectors
Basis = X*Phi;

No comments: