资源简介
利用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%输出峰值失真
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%
评论
共有 条评论