无线通信均衡技术matlab仿真
现给出迫零均衡(ZF)、最小均方误差均衡中的最小均方算法(LMS)的matlab程序,理解各程序,完成以下习题。将程序运行结果及各题目的解答写入word中:
用matlab分别运行“main_zf.m”和“main_lms.m”
(a)在程序中标注“注释”处加上注释(英文或中文)。
(b)写出这两种算法实现的流程。
(c)运行程序,会得到关于信号的一系列图形,包括信号序列图、均衡前后眼图以及均衡前后的误码率图,分析这些图形,你能得到什么结论
答:
在程序中标注“注释”处加上注释(英文或中文)。
main_zf程序:
dataout=conv(r,C); %注释:接收信号进入ZF滤波器
title('迫零均衡后的眼图'); %注释:绘制眼图
snr_in_dB=[4:11]; %注释:不同的误码率
N=[1 2 3]; %注释:不同的滤波器抽头系数(2N+1)
SNR=10^(snr_in_dB(jj)/10); %注释:将dB形式的信噪比转化为线性的
err=0; %注释:误码率清零
err1=0; %注释:未经均衡的误码率清零
err1=0; %注释:未经均衡的误码率清零
for kk=1:10^3 %注释:仿真次数……这个不用注释了吧
x=2*round(rand(1,M)+P-0.5)-1; %注释:产生一列01码
x2=awgn(x,SNR,'measured','linear'); %注释:按照SNR加入加性高斯白噪声
x1=conv(x2,h); %注释:信号进入信道
y=conv(x1,C); %注释:迫零均衡
L=(length(y)-M)/2;
y=y(L+1:L+M); %注释:只取卷积的一部分用于判决
y=sign(y); %注释:判决
err=err+sum(abs(x-y))/2; %注释:统计误码总数(经过均衡的)
L1=(length(x1)-M)/2; %注释:确定取卷积的其实位置
x11=x1(L1+1:L1+M); %注释:只取卷积的一部分用于判决
y11=sign(x11); %注释:
err1=err1+sum(abs(x-y11))/2; %注释:确定未经均衡的误码总数
err_rate(ii,jj)=err/(M*10^3) %注释:经过均衡的误码率
err_rate1(1,jj)=err1/(M*10^3) %注释:未经均衡的误码率
main_LMS.m函数
for i = 1:length(SNRdB)% 注释:仿真不同信噪比下的情形
disp(['目前仿真到第',num2str(i),'轮:','SNR=',num2str(SNRdB(i)),'dB']); %注释:在命令窗口输出当前仿真的轮数
TotalError = 0;% 注释:初始化误码数
SNR = 10^(SNRdB(i)/10);% 注释:转换成线性的信噪比
for JJJ = 1:Loops(i) % 注释:仿真轮数…
x=randsrc(1,N,[0,1;0.5,0.5]);%注释:等概率产生01序列
x1=1-x*2;%注释:将序列转换成双极性
x2 = conv(x1,h);% 注释:信号进入信道
x3 = AWGN(x2,SNR,'measured','linear'); %注释:双极性信号加入加性高斯白噪声
x6=filter(C,1,x3); %注释:使用上面生成的多项式对加入噪声的信号进行滤波
x7 = (1-sign(x6))/2;%注释:判决
x8=x3<0; %注释:过零判决
TotalError = TotalError + sum(abs(x-x7(3:end))); %注释: 均衡后误码总数
totalerror1=totalerror1+ sum(abs(x8(1:end-2)-x)); %注释:均衡前误码总数
BER(i) = TotalError / (N-order) / Loops(i); % 注释:均衡后的误码率
ber1(i)= totalerror1 / N / Loops(i); %注释: 均衡前的误码率
semilogy(SNRdB, BER,'r.-');%注释:绘制误码率曲线
写出这两种算法实现的流程。
迫零算法:
LMS算法:
(c)运行程序,会得到关于信号的一系列图形,包括信号序列图、均衡前后眼图以及均衡前后的误码率图,分析这些图形,你能得到什么结论
迫零算法:
无论是从多径序列还是从其眼图上,我们都可以发现信号的质量是非常差的,眼图的“眼睛”张开缝隙非常小,并且也存在定时抖动,而经过迫零论衡后的眼图的质量有着显著的提升,眼睛张开的很大,并且定时抖动也非常小,可以说是比较理想的。从后面的误码率-信噪