基本信息
源码名称:通信信号盲均衡算法(CMA算法、RLS-CMA算法、MRLS-CMA算法)
源码大小:0.02M
文件格式:.rar
开发语言:C/C++
更新时间:2019-04-13
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 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算法')