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

📄 sepa_l.m

📁 盲分离算法
💻 M
字号:
% SOURCE SEPARATION IN LINEAR MIXTURES%-------------------------------------------------------------------------------%	s  =	source signals%	e  = 	observations%	y  =	output signals%-------------------------------------------------------------------------------
% Grenoble, December 2000
% This work has been partly funded by the European project BLIS (IST-1999-14190)
% initialisationsiter=1;					% incrementationnsrc=2;					% number of sourcesId=eye(nsrc);				% identity matrixB=Id;					% separating matrixtrack_B=B(:);				% keep for further displaysource1;				% source s1source2;				% source s2s=[s1; s2];				% sources signal (statistically independent)matrix;					% mixing matrix (nsrc-by-nsrc)% observations
e=A*s;					% linear system
% plots
subplot(ay(1));plot(e(1,:),'r','MarkerSize',2);title('observations 1','FontSize',15);
subplot(ay(2));plot(e(2,:),'b','MarkerSize',2);title('observations 2','FontSize',15);
subplot(ay(3));plot(s(1,:),s(2,:),'*','MarkerSize',2);title('sources distribution','FontSize',15);
subplot(ay(4));plot(e(1,:),e(2,:),'*','MarkerSize',2);title('observations distribution','FontSize',15);% outputs initialisationy=B*e;					% outputs of the linear system estimatiomwaitfor(ay(8),'Userdata',1);		% wait user press "START" on GUI% iterations
while iter <= itmax
   set(az(8),'String',iter);		% set the number of incrementation (iter) on GUI      % score function estimation   psi=estim_psi(y,sigma);      % linear system estimation   G=(psi*y')/T;			% E(psi(yj)*yi)   YY=y*y'/T;				% E(yi^2) (=variance(yi))   H=G-diag(diag(G))+Id-diag(diag(YY));	% ensure a decrease of the mutual information   					% and a normalisation (variance(yi)=1)			   B=(Id+mu*H)*B;			% algorithm      % output signal   y=B*e;

   % keep for further display   track_B=[track_B B(:)];      % plots
   subplot(az(2));   plot(y(1,:),'r','MarkerSize',2);title('output signal 1','FontSize',15);
   subplot(az(3));   plot(y(2,:),'b','MarkerSize',2);title('output signal 2','FontSize',15);
   subplot(az(1));   plot(y(1,:),y(2,:),'*','MarkerSize',2);title('outputs distribution','FontSize',15);   drawnow;      iter=iter+1;				% incrementation   end;
	% plots
;subplot(az(2));plot(s(1,:),'r','MarkerSize',2);hold on;plot(y(1,:),'b','MarkerSize',2);title('red: source 1   blue: output 1','FontSize',15);subplot(az(3));plot(s(2,:),'r','MarkerSize',2);hold on;plot(y(2,:),'b','MarkerSize',2);title('red: source 2   blue: output 2','FontSize',15);
subplot(az(11));hold on;for k=1:nsrc*nsrc plot([0:iter-1],track_B(k,:),'MarkerSize',2);end;title('separating matrix coefficients','FontSize',15);

⌨️ 快捷键说明

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