(接上篇)
【例7-13】 使用下面的参数设计信道均衡器,其中使用两个独立的随机数发生器,一个用x(n)来表示,用来测试信道;另一个用v(n)来表示,用来模拟接收器中的加性白噪声的影响。序列x(n)是x(n)=±1的伯努利序列,随机变量x(n)具有零均值和单位方差。第二个序列v(n)具有零均值,其方差由信噪比决定。均衡器有11个抽头。
例程7-11 自适应信道均衡器
自适应均衡器的仿真程序:
W=2.9;
Nexp=10;
N=2000;
Nmc=1;
M=11; %抽头系数
lambda=0.99; %遗忘因子
varv=0.001; %噪声方差
h=zeros(3,1); %h的初始化
er=zeros(N,Nmc); %er的初始化
h(1)=0.5*(1+cos(2*pi*(1-2)/W));
h(2)=0.5*(1+cos(2*pi*(2-2)/W));
h(3)=0.5*(1+cos(2*pi*(3-2)/W));
% 学习曲线
hc=[0 h(1) h(2) h(3)]';
n0=7;
t=(1:N)';
for i=1:Nmc
y=sign(rand(N,1)-0.5); %输入信号
v=sqrt(varv)*randn(N,1); %噪声信号
x=filter(hc,1,y)+v; %信号混合
x=[zeros(M-1,1);x]; %x矩阵
yd=zeros(N+M-1,1); %延迟信号初始化
e=yd;
yd(n0+M-1:N+M-1)=y(1:N-n0+1);
lambda=0.98;
P=(10^-3)*eye(M,M);
c=zeros(M,1);
g=c;
glambda=g;
for n=M:M+N-1
xn=flipud(x(n-M+1:n));
glambda=P*xn;
alphal=lambda+conj(glambda')*xn;
g=glambda/lambda;a(n)=1-conj(g')*xn;
P=(P-g*conj(glambda'))/lambda;
P=(P+P')/2;
e(n)=yd(n)-conj(c')*xn;
c=c+g*conj(e(n));
end
end
eplot=e(M:M+N-1).^2;