• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: Matlab
  • 标签: 迫零均衡  

资源简介

利用MATLAB对通信原理中迫零均衡进行了仿真,验证了迫零均衡的效果,并画出了眼图,对均衡前后的信号进行了对比

资源截图

代码片段和文件信息

%实验四 迫零均衡
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%本程序包括四部分,分别实现了迫零均衡,信号产生,绘制眼图以及误码率的计算
%%执行时可以分步执行,但特别注意该部分中的两个判决电平要根据前面眼图得到,及时进行修改



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%第一部分迫零算法 求解抽头系数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N=1;%抽头个数确定 2N+1
%h=input(‘请输入均衡器输入的个抽样点的值h(n)‘)
%h=[-0.001 0.0178 0.15  -0.32  1 0.318 0.19 0.097 -0.001];
h=[0.1 -0.25 1 -0.25 0.1];%信道1
%h=[-0.2 0.5 1 0.5 -0.2];%信道2
center=find(h==1);%寻找均衡器输入的零时刻值得坐标位置,定位h(0)
M1=center-1;
L=length(h);
M2=length(h)-center;
if M1>M2    %0左边抽样值大于右边
    y=zeros(12*M1+1);
    y=[hzeros(1M1-M2)];%右边补零构成奇数个,其关于
        h=y;
elseif M2>M1
    y=zeros(12*M2+1);
    y=[hzeros(1M2-M1)];
        h=y;
end       
L=length(h);%计算修正后的长度
M=max(M1M2);%修正后的输入长度为2M+1
x=zeros(14*N+1);

if 2*N<=center-1%如果输入在零负时刻抽样点个数大于2*N
    x(1:2*N+1)=h(center-2*N:center);
else
    x(1:2*N+1)=[zeros(12*N-center+1)h(1:center)];
end
if 2*N<=L-center%如果输入在零负时刻抽样点个数大于2*N
    x(2*N+2:4*N+1)=h(center+1:center+2*N);
else
    x(2*N+2:4*N+1)=[h(center+1:L)zeros(12*N+center-L)];%如果输入在零正时刻抽样点个数大于2*N
end  
x
subplot(311)
stem(h)
title(‘均衡前输入单脉冲响应波形h(n)‘)
subplot(312)
stem(x)
title(‘均衡前单脉冲响应波形(x(-2N)~x(2N)‘)
A=zeros(2*N+11);%迫零原理,y0=1.剩余2N个值为零
A(N+1)=1;
X=zeros(2*N+12*N+1);
for i=1:2*N+1                  %构造抽样值矩阵
    X(i:)=fliplr(x(i:2*N+i));
end
display(‘所得抽头系数为:‘)
C=inv(X)*A
%利用迫零算法求解抽头系数

y=conv(xC‘);%均衡后的输出值
subplot(313)
stem(y)
title(‘均衡后输出单脉冲响应波形y(n)‘)

%%%%%%
%计算峰值失真。
display(‘均衡前输入峰值失真‘)
d0=sum(abs(h))/max(abs(h))-1%输入峰值失真\
display(‘均衡后输出峰值失真‘)
d1=sum(abs(y))/max(abs(y))-1%输出峰值失真

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%

评论

共有 条评论

相关资源