logo资料库

自适应均衡.docx

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
一、题目 其中,ks 为 BPSK 信号, h k       1 1 cos    2     2   0  k  2        k  1,2,3 x , k k 为其它值    , n k s k h k 分别取值为 2.9 和 3.3,噪声功率为 0.01,分别采用 LMS 算法,CM 算法以及 CM 加判决反馈算法实现自适应均衡,画出不同算法下 nE   2   的收敛曲线。
二、结果 其中设置 kw 阶数为 6,在 CM 加判决反馈算法实现过程中,在进行 100 次 CM 算法后运用判决反馈自适应算法。得到的三种算法的 nE   2   的收敛曲线 如下: 图 1 LMS 算法的收敛曲线 图 2 判决反馈自适应算法的收敛曲线
图 3 CM 加判决反馈算法的收敛曲线 由图 2 可以看出,CM 算法在初始误码率很高时可以得到有效收敛,但稳态 性能较差,由图 3 可知,CM 加判决反馈算法的收敛速度很快,且稳态性能较好, 误差较低。 代码: clc close all clear all %% num_signal=2000; n = rand(1,num_signal); index=find(n>=0.5); s=zeros(1,num_signal); s(index)=2; s=s-1; tm=1:10; ssin=cos(2*pi/10*(tm-1)); sk=[]; for i=1:num_signal sk=[sk,s(i)*ssin]; end % w=2.9; % figure; % plot(real(sk(1:100))); w=3.3; for k=1:3 end h(k)=1/2*(1+cos(2*pi/w*(k-2)));
y=conv(sk,h); % % figure; % plot(real(y(1:100))); noise=wgn(1,length(y),-10); xk=y+noise; % figure; % plot(real(xk(1:100))); num=6; N=length(xk); temp1=xk(3:N-5); temp2=xk(4:N-4); temp3=xk(5:N-3); temp4=xk(6:N-2); temp5=xk(7:N-1); temp6=xk(8:N); temp=[temp6;temp5;temp4;temp3;temp2;temp1]; R = conj(temp)*temp.'/size(temp,2); %% %LMS 算法实现自适应均衡 w = 1*ones(num,length(temp)+1); miu = 0.01/trace(R); for cont = 1 :length(temp) X_input = temp(:,cont); error_output = sk(cont) - X_input'*w(:,cont); error_cov(cont) = error_output; delt_grad = -2*error_output*conj(X_input); tt(cont)=delt_grad'*delt_grad; w(:,cont+1) = w(:,cont) - miu*delt_grad; end % wm=w(:,length(temp)+1); % ttt=temp'*wm; % figure; % plot(real(ttt(1:100))); figure subplot(1,3,1)
plot(1:1:length(temp),abs(w(1,2:end)),'b') title('w1 收敛曲线') subplot(1,3,2) plot(1:1:length(temp),abs(w(2,2:end)),'r') title('w2 收敛曲线') subplot(1,3,3) plot(1:1:length(temp),abs(w(3,2:end)),'k') title('w3 收敛曲线') figure plot(error_cov(1:4995)); axis([0 5000 -3 3]) %% %CM 算法实现自适应均衡 R0=1; w1 = 1*ones(num,length(temp)+1); miu = 0.01/trace(R); for cont = 1 :length(temp) X_input = temp(:,cont); yk=X_input'*w1(:,cont); error_output = abs(yk)^2 - R0^2; error_cov1(cont) = sk(cont)-yk; delt_grad = 4*yk*error_output*conj(X_input); w1(:,cont+1) = w1(:,cont) - miu*delt_grad; end % yyyy=temp'*w1(:,length(temp)+1); % figure; % plot(yyyy(1:100)); figure subplot(1,3,1) plot(1:1:length(temp),w1(1,2:end),'b') title('w1 收敛曲线') subplot(1,3,2) plot(1:1:length(temp),w1(2,2:end),'r') title('w2 收敛曲线') subplot(1,3,3)
plot(1:1:length(temp),w1(3,2:end),'k') title('w3 收敛曲线') figure plot(error_cov1(1:4995)); axis([0 5000 -3 3]) %% %CM+判决引导自适应均衡 w2 = 1*ones(num,length(temp)+1); miu = 0.01/trace(R); for cont = 1 :100 X_input = temp(:,cont); yk=X_input'*w2(:,cont); error_output = abs(yk)^2 - R0^2; error_cov2(cont) = sk(cont)-yk; delt_grad = 4*yk*error_output*conj(X_input); w2(:,cont+1) = w2(:,cont) - miu*delt_grad; end for cont = 10 :floor(length(temp)/10)-1 X_input=[]; for i=1:10 X_input=[X_input;temp(:,cont*10+i)']; end yk=X_input*w2(:,51); if sum(yk(1:5))>=0 dk=sin(2*pi/10*(tm-1)); dk=-1*sin(2*pi/10*(tm-1)); else end for i=1:10 error_output = dk(i) - X_input(i,:)*w2(:,cont*10+i); error_cov2(cont*10+i) = error_output; delt_grad = -2*error_output*conj(X_input(i,:)'); w2(:,cont*10+i+1) = w2(:,cont*10+i) - miu*delt_grad; end end figure subplot(1,3,1) plot(1:1:length(temp),w2(1,2:end),'b') title('w1 收敛曲线')
subplot(1,3,2) plot(1:1:length(temp),w2(2,2:end),'r') title('w2 收敛曲线') subplot(1,3,3) plot(1:1:length(temp),w2(3,2:end),'k') title('w3 收敛曲线') figure; plot(error_cov2(1:4990)); axis([0 5000 -3 3])
分享到:
收藏