www.pudn.com > mybss.rar > mybss.m


%“盲信号分离的matlab仿真”,信号与信息处理专业,罗敏,061120054  
clear all 
clc 
K=4; 
N=100; 
k=1:N; 
s1=rand(1,N); 
s2=square(2*pi*k/8);   %generate a square wave with a period of 2*pi 
s3=sin(2*pi*k/32); 
s4=cos(2*pi*k/32); 
figure(1) 
subplot(2,2,1); 
plot(k,s1); 
title('随机信号'); 
subplot(2,2,2); 
plot(k,s2); 
title('方波信号') 
subplot(2,2,3); 
plot(k,s3); 
title('正弦信号') 
subplot(2,2,4); 
plot(k,s4); 
title('余弦信号') 
X=zeros(K,N); 
A=randn(K); 
H=A*[s1;s2;s3;s4]; 
for i=1:K 
    H(i,:)=H(i,:)-1/N*sum(H(i,:)); 
end 
H 
figure(2); 
plot(k,H); 
title('观测信号') 
%实现对观察数据矩阵H的预白化 
A=double(H); 
m=mean(A,2); 
A=A- m(:,ones(1,size(A,2))); 
covarianceMatrix=cov(A); 
% covarianceMatrix=A*A'; 
[y, x] = eig (covarianceMatrix); 
whiteningMatrix = x^(-.5)* y'; 
dewhiteningMatrix = y * sqrt (x); 
new_A=whiteningMatrix*A; 
figure(3) 
plot(k,new_A); 
title('whitened') 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
for i=1:4 
    for j=(i+1):4 
        temp=x(i,i); 
        temp_2=y(:,i); 
        if temp1-epsilon)    %判断是否收敛 
                        exit=1; 
          end 
          iter=iter+1; 
   end 
end 
  
out=W'*Y; 
figure(4) 
subplot(2,2,1); 
plot(k,out(1,:)); 
subplot(2,2,2); 
plot(k,out(2,:)); 
subplot(2,2,3); 
plot(k,out(3,:)); 
subplot(2,2,4); 
plot(k,out(4,:));