# 基于迫零准则的自适应线性均衡器的研究

### 时间：2017-7-12 12:05:11 点击：

核心提示：基于迫零准则的自适应线性均衡器的研究...

1.2 国内外研究性现状

41 信号发送部分

这个模块的主要实现代码如下所示：

t1 = step;step:6*T;

for i=1:600

if i<=100

filter_pluse(i)=1-exp(-i/100);

else

filter_pluse(i)=filter_pluse(100)*exp(-(i/100-1));

end

end

filter_pluse=filter_pluse';

save filter_pluse;

nT = T/step;

nx = N*nT;

nc = length(filter_pluse);

signal_with_ISI = zeros(nx, 1);

for n=1:N

nubmer = (n-1)*nT;

y = [zeros(nubmer,1); r0(n)*filter_pluse; zeros(N*nT-nubmer-nc,1)];

signal_with_ISI = signal_with_ISI + y(1:nx);

end

通过这个部分，我们可以得到带噪声和ISI的基带信号，下面我们将研究基于迫零的线性均衡器的设计与研究。

通过高斯噪声，其主要实现代码如下所示：

pluse_noise  = sum(signal_with_ISI.*signal_with_ISI)/length(signal_with_ISI);

np = pluse_noise/SNR;

noise =  sqrt(np) * randn(length(signal_with_ISI),1);

signal_with_ISI_noise = signal_with_ISI + noise;

2 迫零算法调整

filter_pluse_sample = [zeros(2*Ne,1); cT; zeros(2*Ne+1-length(cT),1)];

Ci = zeros(2*Ne+1,2*Ne+1);

for i = 1:2*Ne+1

Ci(i,:) = filter_pluse_sample(2*Ne+i:-1:i)';

end

r = [zeros(Ne,1); 1; zeros(Ne,1)];

ZF_out = Ci \ r;

hzf = kron(ZF_out, Z);

LS = conv(signal_with_ISI_noise, hzf);

ZF_filter = LS((Ne*nT+1):(length(LS)-(Ne+1)*nT)+1);

close all;

clc;
clear;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%QAM调制参数
M=4;      %16-QAM调制
k=log2(M);
len=10000;    %numbers of bits
N=len/k;      %numbers of调制后点数
nsample=1;       %Oversampling rate
%均衡器参数
order=9;             %FIR滤波器阶数
snr=35;               %信道信噪比，单位DB
mu=0.01;              %迭代步长
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%备调制
x=randint(len,1);                     %原始二进制信号
yy=reshape(x,k,length(x)/k)';
xsym=bi2de(reshape(x,k,length(x)/k)');%化成0-15之间，以备调制
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%16QAM调制
figure;
y=modulate(modem.qammod(M),xsym);     %16QAM调制
scatterplot(y(1:N));
title('16调制后的信号散点图（理想信号）');
xlabel('In-phase');
ylabel('正交');
hold on;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%对调制后的信号加入噪声，来模拟信号通过信道后的畸变
figure;
ytx=y;
ynoise=snr+10*log10(k)-10*log10(nsample);
y_signal_noise=awgn(ytx,ynoise,'measured');%通过信道后含噪声的信号
scatterplot(y_signal_noise(1:N));
title('通过信道后的信号的散点图（含噪声信号）');
xlabel('In-phase');
ylabel('正交');
hold on;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%获取信号y和y_signal_noise的实部和虚部，以设计二维自适应均衡器
y_real=zeros(1,N);
y_imag=zeros(1,N);
y_signal_noise_real=zeros(1,N);
y_signal_noise_imag=zeros(1,N);
for n=1:N
y_real(n)=real(y(n,1));
y_imag(n)=imag(y(n,1));
y_signal_noise_real(n)=real(y_signal_noise(n,1));
y_signal_noise_imag(n)=imag(y_signal_noise(n,1));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%step 1.用上述信号前train_len个点进行训练
train_len=500;                         %用上述信号的train_len个点进行训练
wk_real=zeros(1,order);                       %抽头系数权向量实部
wk_imag=zeros(1,order);                       %抽头系数权向量虚部
train_e_real=zeros(1,train_len);               %训练误差实部
train_e_imag=zeros(1,train_len);               %训练误差虚部
train_output_real=zeros(1,train_len);          %训练输出实部
train_output_imag=zeros(1,train_len);          %训练输出虚部
k=1;
for n=order:train_len
train_yn_real=y_signal_noise_real(n:-1:n-(order-1));                 %I支路
train_yn_imag=y_signal_noise_imag(n:-1:n-(order-1));                 %Q支路

train_output_real(k)=wk_real*train_yn_real'-wk_imag*train_yn_imag';  %I支路，滤波器输出实部
train_output_imag(k)=wk_real*train_yn_imag'+wk_imag*train_yn_real';  %Q支路,滤波器输出虚部

train_e_real(k)=y_real(n-4)-train_output_real(k);    %I支路，期望信号为原始信号的6拍延时，求误差
train_e_imag(k)=y_imag(n-4)-train_output_imag(k);    %Q支路,期望信号为原始信号的6拍延时，求误差
wk_real=wk_real+mu*(train_e_real(k)*train_yn_real+train_e_imag(k)*train_yn_imag);%I支路，更新Wk
wk_imag=wk_imag+mu*(train_e_imag(k)*train_yn_real-train_e_real(k)*train_yn_imag);%Q支路, 更新Wk
train_e_real(k)=train_e_real(k)^2;
train_e_imag(k)=train_e_imag(k)^2;
k=k+1;
end
figure(3);
n=1:train_len-order;
plot(n,train_e_real(1:train_len-order),'r');
xlabel('训练次数n');
ylabel('e(n)^2');
title('I支路——LMS训练误差平方的曲线');
hold on;
figure(4);
n=1:train_len-order;
plot(n,train_e_imag(1:train_len-order),'g');
xlabel('训练次数n');
ylabel('e(n)^2');
title('Q支路——LMS训练误差平方的曲线');
hold on;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%step 2.用上述信号（除前train_len个点以外）进行线性自适应均衡
run_len=N-train_len;
run_output_real=zeros(1,run_len);          %自适应均衡后输出的实部
run_output_imag=zeros(1,run_len);          %自适应均衡后输出的虚部
run_output=zeros(1,run_len);               %自适应均衡后输出(含实部和虚部)
k=1;
for n=train_len:N
run_input_real=y_signal_noise_real(n:-1:n-(order-1));                 %I支路
run_input_imag=y_signal_noise_imag(n:-1:n-(order-1));                 %Q支路
run_output_real(k)=wk_real*run_input_real'-wk_imag*run_input_imag';  %I支路，滤波器输出实部
run_output_imag(k)=wk_real*run_input_imag'+wk_imag*run_input_real';  %Q支路,滤波器输出虚部
run_output(k)=run_output_real(k)+run_output_imag(k)*i;
k=k+1;
end
scatterplot(run_output(1:run_len));
title('自适应均衡后的信号的散点图');
xlabel('In-phase');
ylabel('正交');
hold on;

%值得注意的那就是当信道噪声较强时，用LMS均衡后效果反而不如以前。
%线性LMS均衡在信道噪声较小，偶尔有突扰的场合最适用（即从星座图上来看，偶尔有零星散开的点，这时用线性自适应均衡能显著降低误码率、改善ISI）
%当信道噪声较强时，一般要用非线性均衡了。

• 百度搜索