基本信息
源码名称:通信信号盲均衡算法(CMA算法、RLS-CMA算法、MRLS-CMA算法)
源码大小:0.02M
文件格式:.rar
开发语言:C/C++
更新时间:2019-04-13
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
使用常模算法实现通信信号的盲均衡,具体算法有CMA算法、RLS-CMA算法,以及改进软法MRLS-CMA算法
使用常模算法实现通信信号的盲均衡,具体算法有CMA算法、RLS-CMA算法,以及改进软法MRLS-CMA算法
clc clear all; %%%%%%%%%%%%%%%%%%%%%%%%%%%% % 实现了信号的盲均衡算法 % CMA、RLS-CMA和MRLS-CMA算法 %%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%% 仿真条件 %%%%%%%% i = sqrt(-1); L = 2000; SNR = 20; h = [0.26, 0.93, 0.26]; h = h/norm(h); Nh = length(h); ISI_cma = 0; ISI_rlscma = 0; ISI_mrlscma = 0; Nf = 17; times = 20; for loop = 1:times M = 8; iniphase = 0; sa = randint(L,1,M); sn = (pskmod(sa,M,iniphase))'; rn = filter(h,1,sn); xn = awgn(rn,SNR,'measured'); %%%%%% CMA 算法 %%%%%% W_cma = zeros(Nf,1); W_cma((Nf 1)/2) = 1; muCMA = 0.01; for k = 1:L-Nf X_cma(:,k) = fliplr(xn(k:k Nf-1)); Y_cma(k) = W_cma'*X_cma(:,k); E_cma(k) = Y_cma(k)*(abs(Y_cma(k))^2-1); W_cma = W_cma - muCMA*conj(E_cma(k))*X_cma(:,k); tmpx = conv(W_cma',h); ISIx(k) = sum(abs(tmpx).^2)/max(abs(tmpx))^2-1; ISIlgx(k) = 10*log10(ISIx(k)); end ISI_cma = ISI_cma ISIlgx; %%%%%% RLS-CMA算法 %%%%%%%%%% W_rlscma = zeros(1,Nf).'; W_rlscma((Nf 1)/2) = 1; lmda = 0.99; delta = 0.1; Cn = delta*eye(Nf); for k = 1:(L-Nf) X_rlscma(:,k) = fliplr(xn(k:k Nf-1)); Y_rlscma(k) = W_rlscma'*X_rlscma(:,k); Zn = X_rlscma(:,k)*X_rlscma(:,k)'*W_rlscma*(abs(X_rlscma(:,k)'*W_rlscma)^(2-2)); Hn = Zn'*Cn; Gn = Cn*Zn/(lmda Hn*Zn); Cn = (Cn-Gn*Hn)/lmda; E_rlscma(k) = W_rlscma'*Zn -1; W_rlscma = W_rlscma-Gn*conj(E_rlscma(k)); tmpy = conv(W_rlscma',h); ISIy(k) = sum(abs(tmpy).^2)/max(abs(tmpy))^2-1; ISIlgy(k) = 10*log10(ISIy(k)); end ISI_rlscma = ISI_rlscma ISIlgy; %%%%%% MRLS-CMA算法 %%%%%%% lmda = 0.99; delta = 0.1; Cm = delta*eye(Nf); W_mrlscma = zeros(1,Nf).'; W_mrlscma((Nf 1)/2)=1; for k = 1:L-Nf X_mrlscma(:,k) = fliplr(xn(k:k Nf-1)); Y_mrlscma(k) = W_mrlscma'*X_mrlscma(:,k); Zm = X_mrlscma(:,k)*X_mrlscma(:,k)'*W_mrlscma*abs(X_mrlscma(:,k)'*W_mrlscma)^(2-2); Hm = Zm'*Cm; Gm = (Cm*Zm)/(lmda Hm*Zm); Cm = (Cm-Gm*Hm)/lmda; E_mrlscma(k) = W_mrlscma'*Zm-1; W_mrlscma = W_mrlscma-Gm*conj(E_mrlscma(k)); tmpz = conv(W_mrlscma',h); ISIz(k) = sum(abs(tmpz).^2)/max(abs(tmpz))^2-1; ISIlgz(k) = 10*log10(ISIz(k)); end ISI_mrlscma = ISI_mrlscma ISIlgz; end ISI_cma = ISI_cma/times; ISI_rlscma = ISI_rlscma/times; ISI_mrlscma = ISI_mrlscma/times; figure k = 1:length(ISI_cma) plot(k,ISI_cma,k,ISI_rlscma,'r',k,ISI_mrlscma,'g'); xlabel('迭代次数');ylabel('码间干扰ISI(dB)'); figure subplot(2,2,1) plot(xn,'.');title('均衡前'); subplot(2,2,2) plot(Y_cma(500:end),'.');title('CMA算法'); subplot(2,2,3) plot(Y_rlscma(500:end),'.');title('RLS-CMA算法'); subplot(2,2,4) plot(Y_mrlscma(500:end),'.');title('MRLS-CMA算法')