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

📄 amuse.m

📁 基于盲源分离的scilab程序
💻 M
字号:
clear
s1=wavread('F:\g\source1.wav');
s2=wavread('F:\g\source2.wav');
s3=wavread('F:\g\source3.wav');
s4=wavread('F:\g\source4.wav');
s1=s1(1001:6000,1);
s2=s2(1001:6000,1);
s3=s3(1001:6000,1);
s4=s4(1001:6000,1);

a=rand(4,4);
while det(a)<0.2
a=rand(4,4);
end
x=a*[s1 s2 s3 s4]';
x1=x(1,:)';
x2=x(2,:)';
x3=x(3,:)';
x4=x(4,:)';
xsetech([0,0,1,1/24]);
plot(x1);xtitle('mixture');
xsetech([0,1/12,1,1/24]);
plot(x2);
xsetech([0,2/12,1,1/24]);
plot(x3);
xsetech([0,3/12,1,1/24]);
plot(x4);
xsetech([0,4/12,1,1/24]);
plot(s2);xtitle('scoures')
xsetech([0,5/12,1,1/24]);
plot(s1);
xsetech([0,6/12,1,1/24]);
plot(s3);
xsetech([0,7/12,1,1/24]);
plot(s4);

verboseKS = 0;
// PARAMETERS 
[n,N]=size(x);  // n Sensors Number.
				//T Observations length.
		// Learning stepsizeparameter.
 nsou=n;
whitening=0;

Rxx=(x*x')/N;
[Ux,Dx,Vx]=svd(Rxx);
 Dx=diag(Dx);

 n=max(find(Dx>1e-199)); //Detection the number of sources
   Q=diag(real(sqrt([1;1;1;1]./Dx(1:n))))*Ux(:,1:n)';



Xb=Q*x;
p=1;    
N=max(size(Xb));
Xb=Xb-kron(mean(Xb',1)',ones(1,N));

Rxbxbp=(Xb(:,1:N-1)*Xb(:,2:N)')/(N-1);
Rxbxbp= Rxbxbp+Rxbxbp';
[Vxb Dxb]=spec(Rxbxbp)
[D1 perm]=sort(diag(Dxb))
//D1=flipud(D1);
Vxb=Vxb(:,perm)
W = Vxb'*Q;
//y = Vxb' * x1;

y=W*x;
y1=y(1,:);
y2=y(2,:);
y3=y(3,:);
y4=y(4,:);
xsetech([0,8/12,1,1/24]);
plot(y1);xtitle('estimate')
xsetech([0,9/12,1,1/24]);
plot(y2)
xsetech([0,10/12,1,1/24]);
plot(y3)
xsetech([0,11/12,1,1/24]);
plot(y4)
W*a

⌨️ 快捷键说明

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