7-11.m

来自「是《MATLAB数字信号处理与应用》一书的源代码,该书由李正周编著 清华大学出版」· M 代码 · 共 51 行

M
51
字号
%例程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;
subplot(2,1,1), plot(t,abs(eplot))
ylabel('|e(n)|^2');
xlabel('n');
subplot(2,1,2), plot(t,a(M:M+N-1));
ylabel('\alpha(n)');
xlabel('n');

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?