文章目录
- 前言
- 一、最优延迟迫零均衡器评估模型
- 二、最优延迟迫零均衡器仿真代码
- 1.代码如下:
- 2.迫零均衡器函数zf_equalizer()的MATLAB源码
- 三、仿真结果画图
- 1.不同权系数长度和延迟的迫零均衡器性能
- 2. 不同权系数长度的迫零均衡器的最佳延迟
前言
对于预设均衡器延时,抽头长度N和判决延迟k0是固定的。所选的抽头长度和均衡器延迟会显著影响整个通信链路的性能。这就需要优化抽头长度和判决延迟。本文将给出延迟最优迫零均衡器的MATLAB仿真评估。
一、最优延迟迫零均衡器评估模型
均衡器延迟对通信链路的性能至关重要。均衡器延迟决定了当前时刻检测符号的值。因此,它直接影响均衡器后面的判决模块。
以下仿真代码对每个所选均衡器抽头长度N=[5,10,15,20,25,30]的迫零均衡器进行延迟最优。仿真中,信道冲激响应选择为h[k]= [-0.1, -0.3, 0.4, 1, 0.4, 0.3, -0.1]。对每种抽头长度的均衡器延迟仿真,并绘制均方误差以进行绘图比较。对于给定的抽头长度nTaps,最佳延迟的均衡器的MSE最小。同样的方法可以应用于测试MMSE均衡器的延迟最优。
下面给出仿真模型的MATLAB源代码。
二、最优延迟迫零均衡器仿真代码
1.代码如下:
%(1)参数设置
h = [-0.1, -0.3, 0.4, 1, 0.4, 0.3, -0.1]; % 信道冲激响应,长度=7
nTaps = 5:5:30; % 均衡器抽头数,从5到30
MaxDelay = nTaps + length(h) - 2; % 最大延迟
err = zeros(length(nTaps),MaxDelay(end)); % 6 x 35
optimalDelay = zeros(length(nTaps),1); % 6 x 1,不同抽头数下的最佳延时%(2)计算不同抽头数与延时组合下的均衡器误差和最优延迟
for m = 1:length(nTaps) % 遍历不同抽头数n = 1; % 延迟索引for delay = 0:MaxDelay(m) % 遍历所有延迟[~,err(m,n),optimalDelay(m)] = zf_equalizer(h,nTaps(m),delay);n = n + 1;end
end%(3)画图
figure()
plot(0:MaxDelay(end),log10(err.'),'LineWidth',1.5) % 使用MSE的对数值
grid on
legend('taps number = 5','taps number = 10','taps number = 15', ...'taps number = 20','taps number = 25','taps number = 30', ...'Location','SouthWest')
title('Error Vs equalizer delay for given channel and equalizer tap lengths');
xlabel('Equalizer delay')
ylabel('log_{10}[Error]')%(4)显示每个选定均衡器长度N的最佳延迟
disp('Optimal Delays for each number of equalizer taps ->');
disp(optimalDelay);
2.迫零均衡器函数zf_equalizer()的MATLAB源码
上述仿真中使用了迫零均衡器zf_equalizer的MATLAB,其源码见:
(49)MATLAB实现迫零均衡器原理与代码
三、仿真结果画图
1.不同权系数长度和延迟的迫零均衡器性能
2. 不同权系数长度的迫零均衡器的最佳延迟
% Optimal Delays for each number of equalizer taps ->
% 5
% 9
% 10
% 14
% 16
% 19