1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y5mcm5dw
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
自适应均衡属于自适应信号处理的应用范畴,各种各样的自适应均衡算法如迫零(ZF)算法、最小均方(LMS)算法、递归最小二乘(RLS)算法、变换域均衡算法、Bussgang算法、高阶或循环统计量算法、基于非线性滤波器或神经网络的均衡算法等应运而生。均衡器通常工作在接收机的基带或中频信号部分,基带信号的复包络含有信道带宽信号的全部信息,所以,均衡器通常在基带信号完成估计信道冲激响应和解调输出信号中实现自适应算法等,本文选择了两种典型的自适应算法:以LMS自适应均衡器和RLS自适应均衡器为基础,用MATLAB仿真软件对LMS和RLS两种算法进行仿真,比较并分析了两种算法的性能。
4.部分源码
clc;
clear;
close all;
warning off;
pack;
rng(2);
%产生QAM基带信号
%二进制数据长度
N = 10000;
%传送的有效数据长度
N_data = N;
M = 32;
for i = 1:N
x(i) = 1 + floor(M*rand);
end
qam_sig = func_32QAM(x);
sybol1 = qam_sig(:,1);
sybol2 = qam_sig(:,2);
figure;
subplot(221);
plot(sybol1,sybol2,'b.');
axis([-7,7,-7,7]);
%成型滤波器
Fs = 2000;
T = 2/Fs;
t =-5*T:1/Fs:5*T;
t = t+0.00001;
alfa = 0.4;
p = rcosfir(alfa,[-5,5],Fs*T,1000,'sqrt');
%%%%%%%%%%%%%%%%%%%%%基带成形
%I路成形
n = length(sybol1); % Number of symbols
r = T*Fs; % Oversampling factor
pams1= zeros(size(1:r*n));
pams1(1:r:r*n)=sybol1; % Pulse sequence
ynI = filter(p,1,pams1); % Pulse shaping filtering
%Q路成形
pams2= zeros(size(1:r*n));
pams2(1:r:r*n)=sybol2; % Pulse sequence
ynQ = filter(p,1,pams2); % Pulse shaping filtering
%正交调制
yn0 = ynQ+ynI*j;
%星座图
subplot(222);
plot(ynQ,ynI,'b.');
axis([-7,7,-7,7]);
%%
%信道模型
SNR= 20;
H = [0.47,0.8,0.6];%信道参数
yn = filter(H/sum(H),1,yn0);
%加入噪声
yn = awgn(yn,SNR);
%接收初步滤波处理
H1 = fir1(7,0.5);
yn = filter(H1,1,yn);
%基带等效正解解调
r_ynQ = real(yn);
r_ynI = imag(yn);
%由于时延固定取常数
delay = 1;
re_I = r_ynI(delay);
re_Q = r_ynQ(delay);
for i=1:(N/4-delay)
re_I=[re_I,r_ynI(i*2+delay)];
re_Q=[re_Q,r_ynQ(i*2+delay)];
end
%LMS均衡
uu = 0.005;
Lens = 1024;
%I路均衡
Order = 18;
W = zeros(size(1:Order+1)).';
Start = 1;
%取前Lens个数据作为训练序列
Ref(1:Lens) = sybol1(1:Lens);
for i=Start+1:Lens-Order/2
rk = flipud(re_I(i:i+Order).');
Err(i-Start) = Ref(i-Start+Order/2) - W.'*rk;
W = W + uu*Err(i-Start)*rk;
end
%均衡
re_I = filter(W,1,re_I);
%Q路均衡
W = zeros(size(1:Order+1)).';
Ref(1:Lens) = sybol2(1:Lens);%取前512个数据作为训练序列
for i=Start+1:Lens-Order/2
rk = flipud(re_Q(i:i+Order).'); % Received signal vector
Err(i-Start) = Ref(i-Start+Order/2)-W.'*rk; % Error signal, we use the symbol sequence known in
W = W+uu*Err(i-Start)*rk;
end
%均衡
re_Q = filter(W,1,re_Q); %对re_Q进行均衡
subplot(223);
s=re_I*j+re_Q;
plot(re_I,re_Q,'b.');
title('均衡后信号星座图(20db)');
axis([-7,7,-7,7]);
%%
%信道模型
SNR= 10;
H = [0.47,0.8,0.6];%信道参数
yn = filter(H/sum(H),1,yn0);
%加入噪声
yn = awgn(yn,SNR);
%接收初步滤波处理
H1 = fir1(7,0.5);
yn = filter(H1,1,yn);
%基带等效正解解调
r_ynQ = real(yn);
r_ynI = imag(yn);
%由于时延固定取常数
delay = 1;
re_I = r_ynI(delay);
re_Q = r_ynQ(delay);
for i=1:(N/4-delay)
re_I=[re_I,r_ynI(i*2+delay)];
re_Q=[re_Q,r_ynQ(i*2+delay)];
end
%LMS均衡
uu = 0.005;
Lens = 1024;
%I路均衡
Order = 18;
W = zeros(size(1:Order+1)).';
Start = 1;
%取前Lens个数据作为训练序列
Ref(1:Lens) = sybol1(1:Lens);
for i=Start+1:Lens-Order/2
rk = flipud(re_I(i:i+Order).');
Err(i-Start) = Ref(i-Start+Order/2) - W.'*rk;
W = W + uu*Err(i-Start)*rk;
end
%均衡
re_I = filter(W,1,re_I);
%Q路均衡
W = zeros(size(1:Order+1)).';
Ref(1:Lens) = sybol2(1:Lens);%取前512个数据作为训练序列
for i=Start+1:Lens-Order/2
rk = flipud(re_Q(i:i+Order).'); % Received signal vector
Err(i-Start) = Ref(i-Start+Order/2)-W.'*rk; % Error signal, we use the symbol sequence known in
W = W+uu*Err(i-Start)*rk;
end
%均衡
re_Q = filter(W,1,re_Q); %对re_Q进行均衡
subplot(224);
s=re_I*j+re_Q;
plot(re_I,re_Q,'b.');
title('均衡后信号星座图(10db)');
axis([-7,7,-7,7]);
01_150m