1.均衡
由于信道特性的不理想,码元序列经过信道后会产生码间干扰,为了尽可能地消除码间干扰,可以在接收端加和信道特性的逆滤波器即均衡器,这样信道传输函数和均衡器的传输函数乘积满足无码间干扰条件。
本次采用的是迫零均衡,其目的是使均衡器输出波形仅在零时刻的抽样值为1,其他时刻的抽样值为0。
2.代码
本代码是在发送滤波器和接收滤波器已经满足无码间干扰条件下的仿真,通过眼图来观察均衡前后的效果。
主程序
close all;
clear all;
M=200; % 码元数目
x=randi([0,1],1,M); % 产生二进制随机码,M为码元个数
x=2*x-1; % 单极性转换成双极性码
% 信道等效成一个滤波器,h是信道等效滤波器的抽头系数
h=[0.02 0.05 0.1 -0.2 1 -0.2 0.1 0.06 0.01];
x1=conv(x,h); % 码元序列经过信道,卷积
eyediagram(x1,2); % 迫零均衡前的眼图
title('迫零均衡前的眼图'); % 标题
N=5; % 迫零均衡器的抽头数2N+1
C=force_zero(h,N); % 迫零均衡器的抽头系数
y=conv(x1,C); % 经过信道后的码元序列再经过均衡器
eyediagram(y,2); % 迫零均衡后的眼图
title('迫零均衡后的眼图'); % 标题
force_zero.m文件
function [ c ] = force_zero( h,N )
%% 迫零均衡的实现
%h:归一化的多径信道系数h
%N:均衡器抽头数2N+1
%c:返回迫零均衡器的系数C
H=length(h); % 信道滤波器的抽头系数的长度
MID=find(h==1); % 找到h的时间原点
%若原点两侧的值个数不等,补零使之相等;
if(MID-1<H-MID)
for i=1:(H-MID)-(MID-1)
h=[0,h];
end
else
for i=1:(MID-1)-(H-MID)
h=[h,0];
end
end
L=max(MID-1,H-MID);
%根据给定抽头数确定冲击序列x
%x=[h(-2N) h(-2N+1) ... h(0) ... h(2N-1) h(2N)]
x=zeros(1,4*N+1);
if 2*N>=L
x([2*N+1-L:2*N+1+L])=h
else
x=h([MID-2*N:MID+2*N]);
end
%根据x构造矩阵方程系数X
%X=[ x(0) x(-1) ... x(-2N) ;
% x(1) x(0) ... x(-2N+1);
% ..............................
X=[];
for i=1:2*N+1
X=[X;fliplr(x(i:2*N+i))]; %fliplr函数用来翻转矩阵
end
%d为delta函数
d=zeros(2*N+1,1);
d(N+1)=1;
c=X^(-1)*d;
end
注:这两个文件需要放在同一文件夹下,并且函数文件force_zero.m不可以更改名字。
3.结果图