📄 amuse.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 + -