盲源分离简单的来讲就是在不明确系统的传输特性的前提下,从系统的源信号估计出观测信号的传输信道。
假设n个未知的源信号,各传感器接收到m个混合的观测信号,为混入的加性噪声,混合系统A为未知的混合矩阵。经过分离系统W后分离出近似与源信号的估计向,盲源分离的数学模型可以表达为:
要想分离出源信号S(t)的估计向量Y(t)主要是要求分解离矩阵W,Y(t)的分离系统过程表达式如下:
盲信号分离的原理框图如图所示,由于混合系统A和源信号S(t)都是未知的,所以对于分离出的估计向量Y(t)可能在幅度大小和排列次序存在不确定性,但是信号的信息存在于信号的波形中,所以并不影响对信号的分离。
``` %----------------------------------------------------------------
clc
clear all
%% --------------------------------- Set Parameters
N = 1; %The number of observed mixtures
Ns = 2; %The number of independent sources
Ls = 1000; %Sample size, i.e.: number of observations
finalTime = 40*pi; %Final sample time (s)
initialTime = 0; %Initial sample time (s)
%% --------------------------------- Generating Data for SSA-ICA
Amix = rand(N,Ns); %Amix is a random N x Ns mixing matrix
timeVector = initialTime:(finalTime-initialTime)/(Ls-1):finalTime; %Vector of time coordinates
source1 = sin(1.1*timeVector); %Independent source component 1, sin(a * t)
source2 = cos(0.25*timeVector); %Independent source component 2, cos(b * t)
S = [source1;source2]; %Source Matrix
figure
plot(timeVector,source1) %Plotting the N independent sources vs. time
xlabel('time (s)')
ylabel('Signal Amplitude')
legend('source 1')
figure
plot(timeVector,source2) %Plotting the N independent sources vs. time
xlabel('time (s)')
ylabel('Signal Amplitude')
legend('source 2')
Yobs = Amix*S; %Matrix consisting of M samples of N observed mixtures
figure
plot(timeVector,Yobs) %Plotting the observed signal vs. time
xlabel('time (s)')
ylabel('Signal Amplitude')
legend('observed signal')
%% --------------------------------- Call SSA-ICA algorithm
M = 200;
Sest = SSA_ICA(Yobs,Ns,M);
%% --------------------------------- Show results
figure
plot(timeVector, Sest(1,:))
xlabel('time (s)')
ylabel('Signal Amplitude')
legend('Source Estimation 1')
figure
plot(timeVector, Sest(2,:))
xlabel('time (s)')
ylabel('Signal Amplitude')
legend('Source Estimation 2') ```