matlab信道均衡,使用LMS算法做信道均衡时,更换信道传递函数效果很差
clear;
clc;
% 1.产生长度为2000的0/1随机序列,进行BPSK调制,通过冲激响应为h[1,0.8,0.3]的信道传送,信道的高斯噪声为20dB。
%用LMS算法进行均衡输出,均衡抽头数为8,步长为0.03,训练序列长度为200。
% 2.绘制出星座图显示理想信号、均衡器输入信号、均衡器输出信号。
% 绘制出重复20次实验的瞬时误差平方的统计平均收敛曲线。更改LMS算法步长和抽头个数,观察瞬时均方收敛曲线有什么变化。
% 分析步长因子和抽头个数变化对LMS算法性能的影响。
N = 2000;M = 2;weight = 8;stepSize = 0.03;trainLen = 200;
g = randi(2,N,1) - 1;
cp = [];mod1 = [];f = 0.1 * 3 * pi;t = 0.19;
for n = 1 : length(g)
if g(n) == 0
A = zeros(1,20);
else
A = ones(1,20);
end
cp = [cp A];
c = cos(f*t);
mod1 = [mod1 c];
end
figure(1);
subplot(3,1,1);
plot(cp);
axis([0 200 -1 2]);
subplot(3,1,2);
plot(mod1);
axis([0 200 -2 2]);
cm = [];mod = [];
for n = 1 : length(g)
if g(n) == 0
c = cos(f*t + pi / 2);
else
c = -cos(f*t + pi / 2);
end
mod = [mod c];
end
subplot(3,1,3);
plot(mod);
axis([0 200 -2 2]);
figure(2);
subplot(4,1,1);
plot(mod);
axis([0 200 -2 2]);
mod = awgn(mod, 20);
subplot(4,1,2);
plot(mod);
axis([0 200 -2 2]);
%h = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.599971];
%h = [0.734189,0,0,0,0,0,0,0,0,0,0,0,0,1,-0.406511,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.295130];
h = [1,0.8,0.3]; %冲激响应为h[1,0.8,0.3]的信道传送
rxsig = conv(mod.',h);
subplot(4,1,3);
plot(rxsig);
axis([0 200 -2 2]);
eqlms = lineareq(weight,lms(stepSize));
eqlms.RefTap = 1;
y = equalize(eqlms,rxsig,mod(1:trainLen));
subplot(4,1,4);
plot(y);
axis([0 200 -2 2]);
hold on;
modmsg = pskmod(g,M);
filtmsg = conv(h,modmsg);
eq1.SigConst = pskmod([0,M - 1],M);
[symbolest,yd] = equalize(eqlms,filtmsg,modmsg(1:trainLen));
h = scatterplot(filtmsg,1,trainLen,'rx');
hold on;
scatterplot(symbolest,1,trainLen,'g.',h);
scatterplot(eq1.SigConst,1,0,'k*',h);
legend('Filtered signal','Equalized signal','Ideal sinal constellation');
hold off;
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
