ZF均衡算法和LMS均衡算法的抗多径误码率性能
Posted fpga和matlab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZF均衡算法和LMS均衡算法的抗多径误码率性能相关的知识,希望对你有一定的参考价值。
UP目录
一、理论基础
OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术,实际上OFDM是MCM(Multi Carrier Modulation),多载波调制的一种。通过频分复用实现高速串行数据的并行传输, 它具有较好的抗多径衰落的能力,能够支持多用户接入。OFDM技术由MCM(Multi-Carrier Modulation,多载波调制)发展而来。OFDM技术是多载波传输方案的实现方式之一,它的调制和解调是分别基于IFFT和FFT来实现的,是实现复杂度最低、应用最广的一种多载波传输方案。
OFDM的技术的核心思想是将宽频率载波划分成多个带宽较小的正交子载波,如图3所示,并使用这些正交子载波发送及接收信号。由于每个子载波的带宽小于信道带宽, OFDM可以有效克服频率选择性衰落。 由于同时使用多个载波进行信号传输,OFDM技术属于多载波传输技术的一种。下面我将用数学模型讲解OFDM传输信号的原理。
————————————————
在无线通信系统中,信道特性的变化对通信质量有着重要的影响。对通信信道的自适应均衡是无线通信中的一个重要问题。通过信道自适应均衡可以在信道特性发生变化后快速适应至正常通信。本文主要研究由滑动自回归系统构成的信道均衡模型。由于LMS算法具有结构简单,运行速度快的优点。本文使用LMS算法在滑动自回归系统上实现信道自适应均衡,验证了LMS算法在二阶条件下的收敛过程以及在QPSK调制模型的自适应均衡結果。通过验证可以得出LMS算法在信道自适应均衡过程中可以得到较好的结果。
基本的数字通信系统如图1所示。输入信号x(n)为数字信号,通过发送滤波器将输入信号传输至信道,发送滤波器主要完成信号的变换和阻抗匹配。如果是无线数字通信系统,信道为无线空间,如果是有线数组通信,信道为传输线。不管是有线还是无线数字传输通信,信道中都会混叠有噪声,接收端滤波器主要完成有用信号之外的频谱滤除和阻抗匹配。发送端和接收端以及信道往往难以保证绝对的线性相位,所以当信号经过接收滤波器后,虽然可以滤除有用信号之外的频谱,但是由于非线性相位的原因,经过接收端滤波器后的信号往往会发生畸变,这时就需要均衡器来完成信号的调整。
均衡的原理是将发送滤波器、信道和接收滤波器的总系统函数与均衡器的系统函数互为逆系统。这样基本上可以使x(n)=x1(n),为后面的判决器提供一个准确的信号。具体在均衡时,通过输入端发送一个伪随机码,此随机码同时在均衡器中存储,均衡器将存储的伪随机码与经过发送滤波器、信道和接收滤波器后的数据做差,通过差值的均方值去调整均衡器中的系数,调整至均方误差值最小时,均衡器则被训练到最佳状态。训练结束后,均衡器中的参数就是当前滤波器和信道下的最优值,只有保证滤波器和信道随机特性不发生变化则均衡后的信号就是最优信号。
将OFDM系统接收端的频域输出方程组用矩阵表示为:
Y=HX+W
其中W为加性高斯白噪声。为了得到发送端的发送信号X,最简单的实现方法是将Y乘以矩阵的逆,即:
所以迫零均衡器为:
但当传输信道具有较深的频谱凹陷点时,H(-1)一般不存在,此时一般由其伪逆H+来代替,即
ZF算法有个很大的缺点,没有对噪声进行消除,反而会放大噪声,当信噪比比较低时,性能会非常不好。
二、核心程序
..........................................................................
TotalError = 0; % 每个 SNR 的仿真前,清空错误计数
SNR = 10^(SNRdB(i)/10); % 从 dB 单位的信噪比计算实际 SNR
for JJJ = 1:Loops(i) % 次循环,相同信噪比条件下重复多次,以达到足够错误计数的要求
x=randsrc(1,N,[0,1;0.5,0.5]);%------------------生成随机0,1数据
x1=my_BPSK(x); %------------------BPSK调制
%-----------------------------------------------多径信道+噪声
x2 = conv(x1,h); % 多径
x3 = awgn(x2,SNR/Sample_Rate,'measured','linear'); %通过AWGN信道
if flag == 1 %---若是调试模式,画需要观测的星座图
figure %---多径影响下(无噪声)的星座图
x2_ = x2(3:length(x2)-2); %扣去卷积的头尾各两个
plot(x2_,0,'r*'),ylim([-2,2]),xlim([-2,2]),title('多径影响下的星座图');
grid on;
figure %---多径+噪声影响下的星座图
x3_ = x3(3:length(x3)-2);
plot(x3_,0,'m*'),ylim([-2,2]),xlim([-2,2]),title('多径影响下的星座图');
grid on;
end
%---------------------------------------------------接收端 均衡
x6 = conv(x3,cc); % 接收端均衡模块
x6_ = x6(1:length(x)); %删去后面拖尾的几个零
if flag == 1 %---若是调试模式,画需要观测的星座图
figure %---均衡后的星座图
plot(x6_,0,'b*'),ylim([-2,2]),xlim([-2,2]),title('均衡后的星座图');
grid on;
end
x7 = (1-sign(x6_))/2; % ------------------ 解调与判决
TotalError = TotalError + sum(abs(x - x7)); % --- 统计这次N个点的误码
end
BER(ii,i) = TotalError / N / Loops(i); % --- 计算累积误码率
end
end
figure
semilogy(SNRdB, BER(1,:),'r.-'); % --- 绘制仿真结果 order=1时的误码率
ylim([10^(-6) 10^(-1)]);
hold on;
semilogy(SNRdB, BER(2,:),'bo-'); % --- 绘制仿真结果 order=2时的误码率
hold on;
semilogy(SNRdB, BER(3,:),'g+-'); % --- 绘制仿真结果 order=3时的误码率
hold on;
semilogy(SNRdB, BER(4,:),'mv-'); % --- 绘制仿真结果 order=4时的误码率
hold on;
semilogy(SNRdB, BER(5,:),'k.-'); % --- 绘制仿真结果 order=5时的误码率
legend('一阶迫零均衡器','二阶迫零均衡器','三阶迫零均衡器','四阶迫零均衡器','五阶迫零均衡器');
xlabel('SNR(单位:dB)');
ylabel('误码率');
up82
三、测试结果
通过matlab2021a仿真结果如下:
以上是关于ZF均衡算法和LMS均衡算法的抗多径误码率性能的主要内容,如果未能解决你的问题,请参考以下文章