资源简介
回声消除算法比较,仿射投影APA与NLMS算法比较
代码片段和文件信息
% v1=100;%载波频率1%
% v2=200;%载波频率2%
% v3=400;%载波频率3%
% r=1000;%采样频数%
% k=1:100;
% t=(k-1)/r;%离散时间%
% s=sin(2*pi*v1*t)+sin(2*pi*v2*t)+sin(2*pi*v3*t);%由三个不同频率正玹组合的信号%
[far fs bits] = wavread(‘play.wav‘);
[near fs bits] = wavread(‘Record.wav‘);
far=far‘;
near=near‘;
M=length(far);
temp(1:2500)=near(1:2500);
near(1:M-2500)=near(2500:M-1);
near(M-2500+1:M)=temp(1:2500);
mm1=19000;
mm2=22000;
mm=mm2-mm1;
far=far(mm1:mm2);
near=near(mm1:mm2);
L = mm+1; %input data size
N1 = 10; %filter length
nvar = .001; %output noise variance
w0 = zeros(N11); %initialization for adaptive filters
mu = 0.1; %step-size parameter
epsilon = 1e-5; %regularization parameter
gamma1 = 0.08; %error bound
gamma2 = 0.03;
MCruns = 10; %Monte Carlo simulation runs
mse_apa1 = zeros(L1); %MSE vectors for Monte Carlo simulations
% mse_apa2 = zeros(L21);
% mse_apa3 = zeros(L31);
for I = 1:MCruns
P = 5; %APA order
%%%%%%%%%%%%%%%%%%
%%对cd1进行apa滤波
x=far‘;
d=near‘;
eAPA1 = full_apa(xdN1Pw0muepsilon);
mse_apa1 = mse_apa1 + eAPA1.^2;
end
mse_apa1 = mse_apa1/MCruns;
Rin=far; %远端信号
% % Sinn=pecho;
Sinn=near;%近端信号——近端说话人的语音信号与回声叠加构成
N=240;
M1=mm;
x=Rin(1:N);% x 为远端信号截短
w=zeros(1N);
en1=zeros(1M1);
a=0.0001;
u=0.5;
Dtemp=x(1:N-1)*x(1:N-1)‘;%滤波器输入信号的能量
sout=zeros(1M1);
for i=N:M1;
x(N)=Rin(i); %远端信号
D=Dtemp+x(N).^2;
y=dot(wx);
en1(i)=Sinn(i)-y;
w=w+u*en1(i)*x/(a+D); %远端模式,进行滤波器系数更新
end;
% %%%%%%%%%更新滤波器输入信号的能量值%%%%%%%%%%
Dtemp=D-x(1).^2;
x(1:N-1)=x(2:N);
figure(6);
semilogy(1:mm+1 mse_apa1‘b-‘...
1:mmen1‘‘r--‘);
xlim([03000]);
xlabel(‘k‘) ylabel(‘MSE‘)
% g0=[0.68301;1.18301;0.31699;-0.18301];%分解高通滤波系数%
% k=[0;1;2;3];
% g1=flipud(g0).*(-1).^k;%分解低通滤波系数%
% h0=flipud(g0)/2;%重构高通滤波系数%
% h1=flipud(g1)/2;%重构低通滤波系数%
%
% %分解过程%
%
% x=conv(farh0);
% a0=x(1:2:length(x));%卷积后采样获得第一级分解近似部分%
% x=conv(farh1);
% w0=x(1:2:length(x));%卷积后采样获得第一级分解细节部分%
% x=conv(a0h0);
% a1=x(1:2:length(x));%卷积后采样获得第二级分解近似部分%
% x=conv(a0h1);
% w1=x(1:2:length(x));%卷积后采样获得第二级分解细节部分%
%
% x=conv(a1h0);
% a2=x(1:2:length(x));%卷积后采样获得第三级分解近似部分%
% x=conv(a1h1);
% w2=x(1:2:length(x));%卷积后采样获得第三级分解细节部分%
%
% figure(2);
% subplot(511)
% plot(far);
% ylabel(‘far‘);
% subplot(512)
% plot(a2);
% ylabel(‘a2‘);
% subplot(513)
% plot(w2);
% ylabel(‘w2‘);
% subplot(514)
% plot(w1);
% ylabel(‘w1‘);
% subplot(515)
% plot(w0);
% ylabel(‘w0‘);
% figure(1); %画出信号图和其频谱图%
% subplot(211)plot(s)
% ylabel(‘signal‘);
% subplot(212)stem(linspace(-r/4r/4100)abs(fftshift(fft(s))));
% ylabel(‘幅度谱‘);
%
% figure(2)%画出第一级近似部分与细节部分的时间和频谱图%
% subplot(221)plot(a0)
% ylabel(‘a_0‘);
% subplot(222)stem(linspace(-r/4r/452)abs(fftshift(fft(a0))));
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4724 2012-12-06 10:45 APA.m
评论
共有 条评论