您现在的位置:首页 >> 项目讲座 >> 项目开发经验 >> 内容

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

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

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

在数字通信系统中,码间串扰和加性噪声是造成信号传输失真的主要因素,为克服码间串扰,在接收滤波器和抽样判决器之间附加一个可调滤波器,用以校正(或补偿)这些失真。对系统中线性失真进行校正的过程称为均衡,实现均衡的滤波器称为均衡滤波器。

由于实际的限带信道的传递函数往往是非理想的,且经常是事变的、未知的,因而系统特性不符合奈窐斯特准则,导致在接受端抽样时刻存在码间干扰,使得系统误码性能下降。为此,要考虑在信道传递函数是非理想情况,且信号在信道传输中受到加性白高斯噪声干扰条件下的接收机的设计问题。本文提出了基于迫matlab代做QQ1224848052零算法的信道均衡器,对迫零线性均衡器进行了理论分析,并在Matlab中进行仿真得到了良好的仿真结果。

在数字通信系统中,码间串扰和加性噪声是造成信号传输失真的主要因素,为克服码间串扰,在接收滤波器和抽样判决器之间附加一个可调滤波器,用以校正(或补偿)这些失真。对系统中线性失真进行校正的过程称为均衡,实现均衡的滤波器称为均衡滤波器。

由于信道特性是变化的,均衡器的参数也应该随之而改变,可以自动调整参数以保持最佳工作状态的均衡器就是自适应均衡器(自适应滤波器)。自适应均衡器有频域均衡和时域均衡之分。频域均衡器只能均衡时变信道的幅频特性,不能有效地均衡群时延特性,在数字信号中一般不采用。时域均衡器利用它所产生的响应去补偿已畸变的信号波形,可以有效地抑制码间串扰和加性干扰。随着数字信号处理理论和超大规模集成电路技术的发展,时域均衡已广泛应用于数字通信的各个领域。

接收端的码间干扰(ISI),使系统误码率上升,严重情况下使系统无法继续正常工作。理论和实践证明,在接收系统中插入一种滤波器,可以校正和补偿系统特性,减少码间干扰的影响。这种起补偿作用的滤波器称为均衡器。

随着数字信号处理理论和超大规模集成电路的发展,时域均衡已成为当今高速数字通信中所使用的主要方法。调整滤波器抽头系数的方法有手动调整和自动调整。如果接收端知道信道特性,例如信道冲击响应matlab代做QQ1224848052或频域响应,一般采用比较简单的手动调整方式。由于无线通信信道具有随机性和时变性,即信道特性事先是未知的,信道响应是时变的,这就要求均衡器必须能够实时地跟踪通信信道的时变特性,可以根据信道响应自动调整抽头系数,我们称这种可以自动调整滤波器抽头系数的均衡器为自适应均衡器。

1.2 国内外研究性现状

均衡技术最早应用于电话信道,由于电话信道频率特性不平坦和相位的非线性引起时间的弥散,使用加载线圈的均衡方法来改进传送语音用的双绞线电缆的特性。在高速数字移动通信、数字微波无线通信系统和作为重要的远程通信和军事通信手段之一的短波通信系统中, 由于多径与衰落现象引起码间干扰,系统性能恶化。采用适当有效的自适应均衡技术, 可以克服数据传输在频带利用率、误码率性能以及传输速率上的许多缺点。

自适应均衡就是通过接收端的均衡器产生与信道特性相反的特性以抵消信道时变多径传播引起的干扰,可消除波形叠加、码间串扰,也能减小加性噪声干扰,从而减小误码的技术。均衡分为频域均衡和时域均衡。频域均衡指总的传输函数满足无失真传输的条件。时域均衡是使总冲击响应满足无码间干扰的条件。在实际电路中,往往同时采用频域和时域自适应均衡器,最大限度地提高电路的抗衰落能力。

均衡技术最早应用于电话信道,由于电话信道频率特性不平坦和相位的非线性引起时间的弥散,使用加载线圈的均衡方法来改进传送语音用的双绞线电缆的特性。上世纪六十年代以前,均衡器的参数是固定的或手调的,其性能很差。1965年,出现了一种“迫零自适应均衡器”。1965DiToro独立把自适应均衡器应用于对抗码间干扰对高频链路数据传输的影响。1967年,Austin提出了判决——反馈均衡器。1969年,Gersho以及ProakisMi1le使用最小均方误差准则独立的重新描述了自适应均衡器matlab代做QQ1224848052问题。1972年,Ungerboeck对采用自适应最小均方误差算法的均衡器的收敛性进行了详细的分析。1978年,FalconerLjung介绍了快速卡尔曼算法的一种修正,从而将其计算复杂性简化到可与简单的LMS算法比较的程度。SatoriusAlexander1979年、SatoriusPack1981年证明了色散信道格型自适应均衡器算法的实用性。

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;

我们主要通过修改SNR值实现不同信噪比条件下的信号。

2 迫零算法调整

设方程的右边的数组如下所示:

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

然后根据迫0算法,我们可以得到如下的结果:

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);

以上就是迫0系统的基本结构。


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)
%当信道噪声较强时,一般要用非线性均衡了。








作者:不详 来源:网络
  • 您是如何找到本站的?
  • 百度搜索
  • Google搜索
  • 查阅资料过程中
  • 论坛发现
  • 百度贴吧发现
  • 朋友介绍
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
  • matlab代做|matlab专业代做|matlab淘宝代做(www.hslogic.com) © 2018 版权所有 All Rights Reserved.
  • Email:highspeed_logic@163.com 站长QQ: 1224848052

    专业代做/代写/承接、MATLAB、SIMULINK、FPGA项目、博士/硕士/本科毕业设计、课题设计、论文,毕业论文,Coursework、Eassy、Assignment