📄 gsc_1n.m
字号:
clear all;
K=7;%自适应fir阶数
[s1,fs,bits]=wavread( 'E:/microphone/sources/source2.wav'); %输入无扰信号源
s1=s1';
L=length(s1);%L为信号源长度
u=0.005; %步长因子
de=1;
s2=wavread( 'E:/microphone/sources/source4.wav'); %输入干扰(语音)信号
s2=s2';
%无扰信号加各路时延噪声得到各麦克风经时延对齐后的信号
x1=s1+s2;
x2=s1+[zeros(1,de),s2(1:L-de)];
x3=s1+[zeros(1,2*de),s2(1:L-2*de)];
x=[x1;x2;x3];
A=zeros(2,2*K+1);
B=[1 -1 0;0 1 -1];%堵塞矩阵
X=B*x;
ad=zeros(2,L);
ys=zeros(1,L); %初始化ys为0
y=0.2*ones(1,L);
yc=(x(1,:)+x(2,:)+x(3,:))/3;
for n=2*K+2:L-100
for m=-K:K
A(:,m+K+1)=A(:,m+K+1)+u*y(n-1)*X(:,n-m);
end
for m=-K:K
ys(n)=ys(n)+A(:,m+K+1)'*X(:,n-m);
end
y(n)=yc(n)-ys(n);
end
ps1=10*log10(sum(abs(s1).^2)/L);
nout=y-s1;
pnout=10*log10(sum(abs(nout).^2)/L);
snr=ps1-pnout;
j=1:L;
subplot(4,1,1)
plot(s1);
% title('original signal');
% subplot(5,1,2)
% plot(j,s2(1:L));
% title('inference signal');
% subplot(5,1,3)
% plot(j,x1);
% title('signal with noise');
subplot(4,1,2)
plot(y);
axis([1,L,-1,1]);
% title('processed signal');
% subplot(5,1,5)
% plot(j,ys);
% title('estimated noise');
%
% wavwrite(y,fs,bits,'processed signal.wav');
% wavwrite(yc,fs,bits,'delay-add signal.wav');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -