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;


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部