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

📄 cxaoriginal.m

📁 本例程对十字形32QAM信号进行盲均衡处理
💻 M
字号:
clc;
clear all;
close all;
%本程序为T/2分数间隔均衡器用来产生符号间隔输出信号
K=31;                     %均衡器抽头个数
  Mu=0.0000004;
Num_of_realizations=1;    %学习次数
SNR=30;                   %输入信噪比
sgma=1;                   %输入信号功率
N=10000;                  %均衡器输入数据长度
d=1;                      %最小欧式距离
Fd=1000;                  %波特率
Fs=1000;                  %采样速率
channel_selector=16;      %信道频率抽取间隔
ISI_av=zeros(1,N-K+1);        %平均码间干扰初始值
MD_av=zeros(1,N-K+1); 
M=32;                     %进制数调制
k1=0.8152;
%k1=0.8944;
%k1=0.8056;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
%%%%%%%%%%设定信道%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
load chan5 C
 chan=C;
% %  load chan1 C
% if channel_selector==0
%     chan=C;
%     clear C rt
% else
% freq_full=fft(C,256);
% freq_dec=freq_full(1:channel_selector:256);%信道频率抽取
% chan=(ifft(freq_dec)).';
% clear C rt freq_full freq_dec
% end
for jt=1:Num_of_realizations
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%产生均衡器输入信号%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    a=qam_gen(M,N,d,Fd,Fs);             %产生符号间隔调制信号
   R=3.7714  %计算常模数R
%     R=4.2073;
    %R=7.6405;
    a1=real(a);
    a2=imag(a);
    figure(1)
    plot(a1,a2,'*k');
    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);  
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%CXA算法%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    count=0;
    for k=K+1:2:2*N
        xk=x(k:-1:k-K+1);
        zk=xk*(W.');
        z(k-K+1)=zk;
        zkr=real(zk);
        zki=imag(zk);
        zy=abs(k1*zkr+zki)+abs(k1*zkr-zki)+abs(zkr-k1*zki)+abs(zkr+k1*zki)-abs(zkr+zki)-abs(zkr-zki);
        X=k1*sign(k1*zkr+zki)+k1*sign(k1*zkr-zki)+sign(zkr+k1*zki)+sign(zkr-k1*zki)-sign(zkr+zki)-sign(zkr-zki);
        Y=k1*sign(zkr+k1*zki)-k1*sign(zkr-k1*zki)+sign(k1*zkr+zki)-sign(k1*zkr-zki)-sign(zkr+zki)+sign(zkr-zki);
        s(k)=((zy)^2-4*R^2)*zy*(X+j*Y);
        W=W-Mu*s(k)*conj(xk);
        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
     for kkk=1:N-K+1
        hhh=conv(chan,Wkeep(:,kkk));
        hhhe=hhh(1:2:end);                   %%降采样(奇数)
        hhho=hhh(2:2:end);                   %%%%降采样(偶数)
        mde(kkk)=MDDSE(hhhe);
        mdo(kkk)=MDDSE(hhho);
    end
    ISI_av=ISI_av+isio;
    MD_av=MD_av+mdo;
end
ISI_av=ISI_av/Num_of_realizations;
 MD_av=MD_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),'*k');
xlabel('CXA');
figure(4)
plot(10*log10(ISI_av),'k');
% hold on;
% load mcxaisi5;
% plot(10*log10(isi5mcxa),'k');
% hold on;
% load ddmcxaisi5;
% plot(10*log10(isi5ddmcxa),'k');
% figure(5)
% plot(MD_av,'k');
% hold on;
% load mcxamd5;
% plot(md5mcxa,'k');
% hold on;
% load ddmcxamd5;
% plot(md5ddmcxa,'k');

⌨️ 快捷键说明

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