⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcxa_32.m

📁 用于盲均衡的改进的常十字模算法,比常十字模算法具有更好的性能
💻 M
字号:
%说明:MCXA(constant cross algorithm)算法,性能由ISI表示,适用于十字星座图,本文仿真信号为32QAM。
%参考文献 Shafayat Abrar.Blind Equalization of Cross-QAM Signals. IEEE signal
%processing letters. 13(12)2006 
%在原文的基础上加CME
clc;
clear all;
close all;
%本程序为T/2分数间隔均衡器用来产生符号间隔输出信号
%%%%%%%%%%%%%%%%%%
%%%输入参数%%%%%%
%%%%%%%%%%%%%%%%
K=31;                     %均衡器抽头个数
delta=0.000005;           %均衡器迭代步长因子
Num_of_realizations=1;    %学习次数
SNR=30;                   %输入信噪比
sgma=1;                   %输入信号功率
N=15000;                  %均衡器输入数据长度
d=1;                      %最小欧式距离
Fd=1000;                  %波特率
Fs=1000;                  %采样速率
channel_selector=16;      %信道频率抽取间隔
ISI_av=zeros(1,N-K+1);    %平均码间干扰初始值
M=32;                     %进制数调制
k1=0.8152;
%k1=0.8056;
n=1;
b=100;
lamta=100;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
%%%%%%%%%%设定信道%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
chan=[0.0410+0.0109j 0.0495+0.0123j 0.0672+0.0170j 0.0919+0.0235j 0.7920+0.1281j 0.3960+0.0871j 0.2715+0.0498j 0.2291+0.0414j 0.1287+0.0154j 0.1032+0.0119j];
for jt=1:Num_of_realizations
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%产生均衡器输入信号%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    a=qam_gen(M,N,d,Fd,Fs);             %产生符号间隔调制信号
    R=3.7714  %计算常模数R
    %R=7.6405;
    a1=real(a);
    a2=imag(a);
    figure(1)
    plot(a1,a2,'*r');
    hold on
    title('(1)原始的星座图')            %画原始的信号星座图
    if(jt==1) 
    end;
    a3=zeros(2*N,1)';                    
    a3(1:2:2*N)=a;                    %调制信号的升采样
    x1=filter(chan,1,a3);       %产生均衡器的输入
    x=awgn(x1,SNR,sgma);              %加噪声
    x1=real(x(1:2:end));
    x2=imag(x(1:2:end));
    figure(2)
    plot(x1,x2,'*r');
    grid on;
    title('(2)均衡器输入信号的星座图'); %画均衡前的信号星座图
    W(1:K)=0; 
    W((K+1)/2)=1;                     %均衡器抽头系数的初始值
    Wkeep=W.'*ones(1,2*N);  
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%CMA算法%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    count=0;
    for k=K+1:2:2*N-K+1
        x_k=x(k:-1:k-K+1);
        z_k=x_k*(W.');
        z(k-K+1)=z_k;
        z_y=abs(k1*real(z_k)+imag(z_k))+abs(k1*real(z_k)-imag(z_k))+abs(real(z_k)-k1*imag(z_k))+abs(real(z_k)+k1*imag(z_k))-abs(real(z_k)+imag(z_k))-abs(real(z_k)-imag(z_k));
        X=k1*sign(k1*real(z_k)+imag(z_k))+k1*sign(k1*real(z_k)-imag(z_k))+sign(real(z_k)+k1*imag(z_k))+sign(real(z_k)-k1*imag(z_k))-sign(real(z_k)+imag(z_k))-sign(real(z_k)-imag(z_k));
        Y=k1*sign(real(z_k)+k1*imag(z_k))-k1*sign(real(z_k)-k1*imag(z_k))+sign(k1*real(z_k)+imag(z_k))-sign(k1*real(z_k)-imag(z_k))-sign(real(z_k)+imag(z_k))+sign(real(z_k)-imag(z_k));
        c=-n*pi/d*((sin(real(z_k)*pi/(2*d)))^(2*n-1)*cos(real(z_k)*pi/(2*d))+j*((sin(imag(z_k)*pi/(2*d)))^(2*n-1)*cos(imag(z_k)*pi/(2*d))));
        z_d=decide_32QAM(z_k,1);
%         s1=abs((z_k-z_d)/(sqrt(2)*d));
        s(k)=((z_y)^2-4*R^2)*z_y*(X+j*Y)+lamta*c;
        W=W-delta*s(k)*conj(x_k);
        count=count+1;
        Wkeep(:,count)=W.';
    end
    if(jt==1) 
    end;
    %%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%均衡器性能%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%
    for lll=1:N-K+1
        jjj=conv(chan,Wkeep(:,lll));
        jjje=jjj(1:2:end);                   %%降采样(奇数)
        jjjo=jjj(2:2:end);                   %%%%降采样(偶数)
        isie(lll)=ISIDSE(jjje);
        isio(lll)=ISIDSE(jjjo);
    end
    ISI_av=ISI_av+isio;
end
ISI_av=ISI_av/Num_of_realizations;
z2=imag(z(2:2:end)).';
z1=real(z(2:2:end)).';   
figure(3)
plot(z1(N-2000:N-K+1),z2(N-2000:N-K+1),'*');
grid on;
title('(3)均衡后的星座图');
figure(5)
plot(10*log10(ISI_av))                              %画剩余ISI曲线,单位dB
xlabel('迭代次数');
ylabel('ISI(dB)');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -