⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mybss.m

📁 盲信号分离是当前信号处理研究的热点课题之一
💻 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 temp<x(j,j)
            x(i,i)=x(j,j);
            x(j,j)=temp;
            y(:,i)=y(:,j);
            y(:,j)=temp_2;
        end
    end
end
d=x
v=y
d.^(1/2);
Y=inv(d.^(1/2))*v'*H;  
%用FastICA算法实现对源信进行分离
epsilon=0.0001;
W=rand(K);
for p=1:K
    W(:,p)=W(:,p)/norm(W(:,p));
    exit=0;
    count=0;
    iter=1;
    while exit==0;
          count=count+1;
          temp=W(:,p); %记录上次迭代的值
         
              W(:,p)=1/N*Y*((temp'*Y).^3)'-3*temp;
         
          ssum=zeros(K,1);
          for counter=1:p-1
              ssum=ssum+(W(:,p)'*W(:,counter))*W(:,counter);   
          end
          W(:,p)=W(:,p)-ssum;  %正交化
          W(:,p)=W(:,p)/norm(W(:,p));
          if(abs((dot(W(:,p),temp)))<1+epsilon)&(abs((dot(W(:,p),temp)))>1-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,:));



  
  

    
    
    
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -