移动通信中的信道均衡技术仿真研究
目录
一、自适应均衡器仿真流程 二、仿真结果展示 三、MATLAB仿真程序
一、自适应均衡器仿真流程

二、仿真结果分析

分析说明:
(1)在无均衡处理的情况下,误码率随信噪比提升而变化较小,整体表现较差,表明该系统性能受限于信道干扰。
(2)当采用步长为delta=0.11的均衡策略时,误码率随着信噪比增加显著下降,改善效果明显但不及最优方案。
(3)使用步长delta=0.09的均衡方法时,误码率下降幅度更大,性能优于前两种情况,显示出更佳的均衡效果。
(4)进一步观察发现,在信噪比低于9dB时,使用步长为0.11或0.09的均衡器反而使误码率高于未均衡状态。这提示我们:当信道条件不佳时,引入均衡机制可能适得其反,应谨慎选择是否启用均衡。
三、MATLAB仿真代码实现
1、主程序部分:
clear;
clc;
echo off;
close all;
N = 10000; % 信号长度
info = random_binary(N); % 生成随机二进制序列
input = info * 2 - 1; % 转换为双极性信号
SNR_in_dB = 8:2:20; % 信噪比范围
% 未均衡情况下的误码率计算
for j = 1:length(SNR_in_dB)
[y, len] = channel(input, SNR_in_dB(j));
err_count = 0;
for i = len+1:N+len
decis = (y(i) < 0) ? 0 : 1;
if decis ~= info(i - len)
err_count = err_count + 1;
end;
end;
Pe(j) = err_count / N;
end;
figure(1);
semilogy(SNR_in_dB, Pe, 'red*-');
hold on;
delta_1 = 0.11;
delta_2 = 0.09;
% 使用步长delta=0.11进行均衡
for j = 1:length(SNR_in_dB)
y = channel(input, SNR_in_dB(j));
z = lms_equalizer(y, input, delta_1);
err_count = 0;
for i = 1:N
decis = (z(i) < 0) ? 0 : 1;
if decis ~= info(i)
err_count = err_count + 1;
end;
end;
Pe(j) = err_count / N;
end;
semilogy(SNR_in_dB, Pe, 'blacko-');
hold on;
% 使用步长delta=0.09进行均衡
for j = 1:length(SNR_in_dB)
y = channel(input, SNR_in_dB(j));
z = lms_equalizer(y, input, delta_2);
err_count = 0;
for i = 1:N
decis = (z(i) < 0) ? 0 : 1;
if decis ~= info(i)
err_count = err_count + 1;
end;
end;
Pe(j) = err_count / N;
end;
semilogy(SNR_in_dB, Pe, 'blue+-');
hold on;
xlabel('信噪比 (dB)');
ylabel('误码率');
title('ISI信道自适应均衡系统仿真');
legend('未均衡', '步长0.11均衡', '步长0.09均衡');
2、随机二进制序列生成函数:
function [ info ] = random_binary( N )
if nargin == 0
N = 10000;
end;
for i = 1:N
temp = rand;
info(i) = (temp < 0.5) ? 0 : 1;
end;
end
3、信道模拟函数:
function [ y, len ] = channel( x, snr_in_dB )
SNR = exp(snr_in_dB * log(10) / 10);
sigma = 1 / sqrt(2 * SNR);
actual_isi = [0.05 -0.063 0.088 -0.126 -0.25 0.9047 0.25 0 0.126 0.038 0.088];
len_actual_isi = (length(actual_isi) - 1) / 2;
len = len_actual_isi;
y = conv(actual_isi, x);
for i = 1:2:size(y, 2)
[noise(i), noise(i+1)] = gngauss(sigma);
end;
y = y + noise;
end
4、高斯白噪声生成函数:
function [ gsrv1, gsrv2 ] = gngauss( sigma )
if nargin == 0
sigma = 1;
end;
u1 = rand;
z = sigma * sqrt(2 * log(1 / (1 - u1)));
u2 = rand;
gsrv1 = z * cos(2 * pi * u2);
gsrv2 = z * sin(2 * pi * u2);
end
5、LMS均衡器函数:
function [ z ] = lms_equalizer( y, info, delta )
estimated_c = [0 0 0 0 0 1 0 0 0 0 0];
K = 5;
for k = 1:size(y, 2) - 2*K
y_k = y(k:k+2*K);
z_k = estimated_c * y_k';
e_k = info(k) - z_k;
estimated_c = estimated_c + delta * e_k * y_k;
z(k) = z_k;
end;
end