%%%%%%%%%%%%%%自适应噪声对消器%%%%%%%%%%%%%%
clear all
clc
%%%%%%%%%%%%%%%%设置初值%%%%%%%%%%%%%%%%%%%%
M=2; %两路信号
fs=2e5; %信号频率
fc=fs/4; %工作频率
bochang=3e8/fc; %工作波长
d=bochang/2; %阵元间隔
N=5e5; %采样点数
theta1=pi/4; %入射角度1
theta2=pi/2; %入射角度2
beta1=2*pi/bochang*d*sin(theta1);
beta2=2*pi/bochang*d*sin(theta2);
a=1;
A=[a 1;a*exp(j*beta1) exp(j*beta2)];
load('data1.mat');
s=[amhbt(:,1:N);fmhbt(:,1:N)];
X=A*s;
w=zeros(M,length(X)); %恒模算法权系数初值
w(:,1)=[0.5-0.6j 0.3+0.6j]';
u=zeros(M,length(X)); %LMS算法权系数初值
u(:,1)=[0.5+0.5j 0.5+0.5j]';
e1=zeros(length(X),1);
e2=zeros(M,length(X));
y=zeros(length(X),1);
u_lms=0.001; %LMS算法步长
u_cma=0.002; %恒模算法步长
%%%%%%%%%%%%%%%%%自适应对消算法%%%%%%%%%%%%%%%%%%%%%
for k=1:N
y(k)=(w(:,k))'*X(:,k); %恒模算法
e1(k)=y(k)/abs(y(k))-y(k); %输出FM信号
w(:,k+1)=w(:,k)+u_cma.*X(:,k)*conj(e1(k)); %恒模迭代
end
for k=1:N
e2(:,k)=X(:,k)-y(k).*u(:,k); %LMS算法
u(:,k+1)=u(:,k)+2*u_lms.*e2(:,k)*conj(y(k)); %LMS迭代
u_lms=u_lms/1.00011;
end
%%%%%%%%%%%%%%%%%%%%%%%画图%%%%%%%%%%%%%%%%%%%%%%%%%
figure(1) %画出恒模信号
k=1:N;
subplot(1,1,1)
plot(k,abs(y(k)),'r')
title('恒模输出信号')
xlabel('快拍数')
ylabel('幅度')
figure(2) %画出阵列信号
k=1:N;
subplot(1,1,1)
plot(k,abs(X),'b')
title('阵列信号')
xlabel('快拍数')
ylabel('幅度')
figure(3) %画出对消输出信号
k=1:N;
subplot(1,1,1)
plot(k,abs(e2(1,k)),'b')
axis([0 5e5 0.7 1.4])
tiitle('对消输出信号')
xlabel('快拍数')
ylabel('幅度')
figure,plot(real(fmhbt),'b') %画出干扰信号
axis([0 2e6 0 1.4])
title('干扰信号')
xlabel('快拍数')
ylabel('幅度')
k=1:N;
figure,plot(k,abs(a*amhbt(k)),'b') %画出话音信号
title('话音信号')
xlabel('快拍数')
ylabel('幅度')
mm=1e5;
for k=1:mm
c(k)=max(xcorr(abs(amhbt(1:k)),abs(e2(1:k)),'coeff'));
end
figure,plot(1:mm,c(k),'b') %画出相关系数曲线