文章目录
- 前言
- 一、仿真说明
- 二、码间串扰、色散、与频率选择性衰落
- 1. 码间串扰(ISI)
- 2. 信道的色散与码间串扰
- 3. 减少ISI的方法
- 三、MATLAB仿真代码
- 四、仿真结果
- 1.发送16QAM信号的星座图
- 2.信道的频率响应
- 3.接收16QAM信号的星座图
- 4.均衡后16QAM信号的星座图
- 5.训练误差
- 总结与后续
前言
信道均衡是通信系统中的一项重要技术,特别是在无线通信中。它的目的是补偿由于多径传播、频率选择性衰落和其他信道效应导致的符号间干扰(ISI)。RLS(递归最小二乘)自适应滤波器是一种用于信号处理的算法,其原理基于最小二乘法。本文给出RLS自适应滤波器用于信道均衡的MATLAB仿真代码。
一、仿真说明
本文将重点介绍RLS滤波器进行信道均衡的仿真,以及仿真中所使用传输信道的频率选择性和群时延色散特性。
为避免内容重复,本文将不再对RLS滤波器的基本概念、算法原理等方面进行介绍。关于这些内容,以及RLS滤波器用于未知系统辨识、降噪、和预测等方面的内容,可以参看之前的三篇文章:
(62)使用RLS自适应滤波器进行系统辨识的MATLAB仿真
(63)使用RLS自适应滤波器进行降噪的MATLAB仿真
(64)使用RLS自适应滤波器进行预测的MATLAB仿真
二、码间串扰、色散、与频率选择性衰落
1. 码间串扰(ISI)
码间串扰是指当传输的数字信号通过信道时,由于信道传输特性的不理想,一个符号(或码元)的影响会扩展到相邻的符号时间间隔内,从而干扰到其他符号。在理想的传输系统中,每个符号的波形应该在符号时间间隔内完全衰减,以避免与下一个符号重叠。然而,实际信道的色散会导致符号波形的尾部延伸到下一个符号时间间隔,造成ISI。
2. 信道的色散与码间串扰
信道的色散与码间串扰(Inter-Symbol Interference, ISI)是数字通信系统中密切相关的两个概念。下面解释它们之间的关系:
色散是指信号中的不同频率分量在传输过程中以不同的速度传播,导致信号失真。在数字通信系统中,色散通常指的是群时延色散(Group Delay Dispersion, GDD),它描述了信号的不同频率分量经历不同的时延。色散会导致信号的相位失真,从而影响信号的完整性。
色散是造成ISI的主要原因之一,以下是它们之间的关系:
(1)时延差异:色散导致信号中的不同频率分量有不同的传播速度,这意味着某些频率分量会比其他分量到达接收端的时间更晚。这种时延差异会使得原本设计为不重叠的符号波形在时间上重叠,从而引起ISI。
(2)频率选择性衰落:色散意味着信道对不同频率有不同的衰减和相位偏移。如果一个数字信号包含多个频率分量,这些分量在通过信道时可能会经历不同的衰减和时延,导致信号波形失真,进而引起ISI。
(3)符号速率与信道带宽:当符号速率(即码元传输速率)相对于信道带宽较高时,色散会导致ISI问题更加严重。这是因为符号波形的变化速度(由符号速率决定)比信道能够支持的频率变化快,导致波形重叠。
3. 减少ISI的方法
为了减少ISI,可以采取以下措施:
均衡技术:在接收端使用均衡器来补偿信道的频率选择性影响,从而减少ISI。
滤波器设计:在发送端使用根升余弦(Raised Cosine)滤波器或其他类型的滤波器来限制信号带宽,减少符号波形的旁瓣,从而降低ISI。
增加符号间隔:通过降低符号速率来增加符号之间的时间间隔,从而减少ISI的可能性。
使用更宽的信道带宽:增加信道带宽可以减少色散的影响,因为更宽的带宽可以更好地容纳信号的频率分量。
总之,信道的色散是引起码间串扰的一个关键因素,理解和控制色散对于设计高效的数字通信系统至关重要。下面给出使用RLS滤波器进行信道均衡从而降低ISI的仿真代码。
三、MATLAB仿真代码
使用RLS滤波器进行信道均衡的仿真代码:
%% 设计RLS均衡器
nTaps = 20; % 权系数的个数
lambda = 0.99; % 遗忘因子
RLSfilter = dsp.RLSFilter(nTaps, 'ForgettingFactor', lambda);
%% 生成发送信号
% 生成一个由5000个16-QAM符号组成的序列,各个符号等概出现。
ntrans = 5000;
j = sqrt(-1);
s = sign(randn(1,ntrans)).*(2+sign(randn(1,ntrans)))+... % 生成16QAM信号j*sign(randn(1,ntrans)).*(2+sign(randn(1,ntrans)));figure();
plot(s,'o');
grid on;
axis([-4 4 -4 4]);
axis('square');
xlabel('Re\{s(n)\}');
ylabel('Im\{s(n)\}');
title('发送信号的星座图(16QAM)');
%% 传输信道(1)频率选择与群时延色散
% 传输信道由信道脉冲响应和噪声特性定义。传输信道同时具有频率选择性和群时延色散特性。
b = exp(j*pi/5)*[0.2 0.7 0.9];
a = [1 -0.7 0.4];
channel = dfilt.df2t(b,a); % 传输信道% 信道的脉冲响应
hFV = fvtool(channel,'Analysis','impulse');
legend(hFV, 'Transmission channel');
set(hFV, 'Color', [1 1 1])% 信道的频率响应
set(hFV, 'Analysis', 'freq')%% 传输信道(2)生成加性噪声
% 加性噪声为复高斯噪声,方差设置为使得接收信号的信噪比为30dB。
sigma = sqrt(1/16*(4*18+8*10+4*2))/sqrt(1000)*norm(impz(channel)); % 平均噪声幅度,也即噪声的标准差
v = sigma*(randn(1,ntrans) + j*randn(1,ntrans))/sqrt(2); % 生成加性噪声%% 生成接收信号
% 发射信号s[n]经信道脉冲响应滤波并叠加噪声v[n]得到接收信号x[n]。
x = filter(channel,s) + v; % 生成接收信号figure();
plot(x,'.');
grid on;
xlabel('Re\{x[n]\}');
ylabel('Im\{x[n]\}');
axis([-40 40 -40 40]);
axis('square');
title('接收信号的星座图(16QAM)');
%% 训练序列
% 训练信号是原始发送信号s[n]的移位版本。该信号对于发射机和接收机来说都是已知的。
d = [zeros(1,nTaps/2) s(1:ntrans-nTaps/2)]; % 所谓训练信号,也即期待信号
%% 均衡器的训练阶段
% 用前2000个样本对RLS均衡器进行训练。均衡器输出信号星座图是以十六个不同符号为中心的符号集,
% 该结果说明已经实现了对信道的均衡。
ntrain = 1:2000; % 训练序列长度
[y,e] = RLSfilter(x(ntrain),d(ntrain)); % RLS滤波器训练,x 为带噪信号,d 为原始信号figure();
plot(y(1:2000),'.');
grid on;
xlabel('Re\{y[n]\}');
ylabel('Im\{y[n]\}');
axis([-5 5 -5 5]);
axis('square');
title('均衡后信号的星座图(16QAM)');
%% 训练误差
% 绘制误差信号e[n]的幅度平方,可以看到RLS算法的收敛速度很快。
% 在本例所给定均衡器设置的情况下,收敛发生在大约60个样本处。
figure();
semilogy(ntrain,abs(e).^2);
grid on;
xlabel('迭代次数');
ylabel('|e[n]|^2');
title('训练误差的模平方');
四、仿真结果
仿真结果如下:
1.发送16QAM信号的星座图
2.信道的频率响应
3.接收16QAM信号的星座图
4.均衡后16QAM信号的星座图
5.训练误差
由均衡后16QAM信号的星座图和绘制的误差信号e[n]的幅度平方,可以看到RLS算法的收敛速度很快。在本例所给定均衡器设置的情况下,收敛发生在大约60个样本处。
总结与后续
本文是RLS自适应滤波器应用举例的第四篇文章,给出了RLS自适应滤波器用于信道均衡的仿真与结果。在后续的文章中,将给出RLS算法和LMS算法进行信道均衡的性能比较,给出具体的MATLAB仿真,希望对您有用。感谢关注!