【信号处理】迫零均衡前与迫零均衡后眼图对比附Matlab代码

本文介绍了迫零盲均衡算法的基本原理及其在带限通信中的应用,重点讨论了最小均衡误差和特征矢量分解方法。通过Matlab代码展示了信号处理流程,包括信道模拟、眼图绘制和不同阶数均衡器对信噪比下误码率的影响。此外,文章还探讨了优化算法中遇到的问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 内容介绍

符号间干扰是影响带限通信信道性能的重要因素之一,为提高系统性能,在接收端需采用均衡技术,盲信道均衡算法是现在的研究热点.迫零盲均衡算法充分利用了输出信号的统计特性,因此具有很好的应用前景.从理论上对目前具有实际应用价值的最小均衡误差、特征矢量分解等迫零盲均衡算法作了介绍,并提出了改进算法中值需解决和注意的问题.

2 仿真代码

echo off;

clear all;

close all; 

%迫零均衡前的眼图

%1.随机产生双极性序列

n= 3000;

M = 300;

A=n/M;%一个码元的取样点数,即过采样率为10

P=0.2;%1码概率

%x=2*round(rand(1,n)+P-0.5)-1;%产生一列01码

x=sign(randn(1,1000));

%2.发送信号序列与一个多抽头的滤波器卷积(相当于经过一个多径信道),产生码间串扰

%h=[0.02 0.05 0.1 -0.2 1 -0.2 0.1 0.06 0.01];

%h=[0.02 0.03 -0.13 0.2 0.08 -0.22 0.28 0.45 -0.2];

h=[0.03 0.06 0.14 -0.25 1 -0.25 0.14 0.03 0.02];%最优

x1=conv(x,h);

%3.成型滤波  

%一种简单的方法生成过采样信号 

temp=[1;zeros(A-1,1)]; 

x2=temp*x1;  

x2=x2(1:end);%过采样信号 

%通过升余弦滤波器,成型滤波  

N_T=6;%控制滤波器长度,滤波器的阶数为2*N_T+1。 

alpha = 1; % 滚降系数,影响带宽 

r=rcosfir(alpha,N_T,A,1); % 产生升余弦滤波器系数 

x3=conv(r,x2);  

%x3=x3(fix(A*N_T)+1:end-fix(A*N_T));%删去由于卷积产生的拖尾的0

%4.将不同码元周期内的图形平移至一个周期内画出眼图。

figure(1);

for ii=0:(M-1)/2

    plot(x3([1:2*30+1]+ii*2*30));

    hold on;

end

xlim([0 44]);

title('迫零均衡前的眼图');

%5.用matlab画眼图函数直接画眼图

eyediagram(x1,5,2);

title('迫零均衡前的眼图');

%二、迫零均衡

N=5;

c=force_zero(h,N);

y=conv(x1,c);

%三、迫零均衡后的眼图

%1.成型滤波

%一种简单的方法生成过采样信号

temp=[1;zeros(A-1,1)];

y1=temp*y;

y1=y1(1:end);%过采样信号

%通过升余弦滤波器,成型滤波

N_T=4;%控制滤波器长度,滤波器的阶数为2*N_T+1

alpha = 1;%滚降系数,影响带宽

r=rcosfir(alpha,N_T,A,1);%产生升余弦滤波器系数

y2=conv(r,y1);

%y2=y2(fix(A*N_T)+1:end-fix(A*N_T));%删去由于卷积产生的拖尾的0

%2.将不同码元周期内的图形平移至一个周期内画出眼图

figure(3);

for ii=0:(M-3)/2

    plot(y2([1:10*A+1]+ii*2*A));

hold on;

end

xlim([0 44]);

title('迫零均衡后的眼图');

%3.用matlab画眼图函数直接画眼图

eyediagram(y,5,2);

title('迫零均衡后的眼图');

%四、计算ISI信号叠加不同信噪比的信道加性噪声后?

%用不同阶数的迫零均衡器均衡后的误码率,并与理想误码率曲线比较。

SNRdB=[4:12];%信噪比(dB)的范围

N=[1 2 3];%用3、5、7阶横向滤波器迫零

err_rate=zeros(length(N),length(SNRdB));%误码率统计

for ii=1:length(N)

    C=force_zero(h,N(ii))

    for jj=1:length(SNRdB)

        SNR=10^(SNRdB(jj)/10);%计算比值形式的信噪比

        err=0;%误码数清零

        for kk=1:10^3 %循环多次以达到足够的精确度

            x=2*round(rand(1,M)+P-0.5)-1;   %产生双极性码

            x1=awgn(x,SNR,'measured','linear'); %加入高斯白噪声

            x1=conv(x1,h);  %通过多径信道

            y=conv(x1,C);

            L=(length(y)-M)/2;

            y=y(L+1:L+M);%除去由于卷积产生的拖尾信号

            y=sign(y);%抽样判决,判决分界为0

            err=err+sum(abs(x-y))/2;%误码数累加

        end

        err_rate(ii,jj)=err/(M*10^3)%误码率计算

    end

end

figure(5);

semilogy(SNRdB,0.5*erfc(sqrt(0.5*10.^(SNRdB/10))));

hold on;

grid on;

semilogy(SNRdB,err_rate(1,:),'-*r');

hold on;

grid on;

semilogy(SNRdB,err_rate(2,:),'-ok');

hold on;

grid on;

semilogy(SNRdB,err_rate(3,:),'-hc');

title('迫零均衡后的误码率');

legend('理想误码率特性','三阶迫零均衡误码率','五阶迫零均衡误码率','七阶迫零均衡误码率');

xlabel('SNR');​

3 运行结果

4 参考文献

[1]雷旭, 徐重阳. 基于二阶矩的直接盲迫零均衡算法[J]. 系统工程与电子技术, 2003.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值