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

📄 cma.txt

📁 恒模算法仿真
💻 TXT
字号:

N=6000;                    %信息序列的长度
K=11;                      %11个抽头系数
%实数信道
%actual_isi=[0.05 -0.063 0.088 -0.126 -0.25 0.9047 0.25 0 0.126 0.038 0.088];%有ISI的信道响应
%复数信道
%actual_isi=[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];
actual_isi=[0.005 0.009 -0.024 0.854 -0.218 0.049 -0.016];
Num_of_realizations=50;      %学习次数
mse_av=zeros(1,N-K+1);
snr=30;
delta_k=0.0001;
sigpower=1; 
d=1;            %QAM的欧式空间距离就是1了
M=16;              %QAM的进制数
mapping=[-3*d 3*d;-d 3*d; d 3*d; 3*d 3*d;-3*d d;-d d; d d; 3*d d;
        -3*d -d;-d -d; d -d; 3*d -d;-3*d -3*d;-d -3*d; d -3*d; 3*d -3*d];
    A=mapping;         
    A=A(:,1)+A(:,2)*j;
  R2=mean((abs(A)).^4)/mean((abs(A)).^2);                 %输入信号的自相关
   for jt=1:Num_of_realizations
   %信源产生
         for i=1:N
             temp=rand;                       %rand是均匀随机数产生命令
             dsource(i)=1+floor(M*temp);     
         end;
     %信息到信号点的映射
         for i=1:N
             qam_sig(i,:)=mapping(dsource(i),:);
         end;
    %发送复数信号
             r=qam_sig;
             plot(r(:,1),r(:,2),'*');      %看星座图
             rr=r(:,1)+j*r(:,2);
           if(jt==1) end;
    %序列通过有ISI的信道滤波器
           ya1=filter(actual_isi,1,rr);
            ya2=ya1';
         yout= awgn(ya2,snr,sigpower);
        estimated_c(1:K)=0; 
       estimated_c((K+1)/2)=1;       %均衡器抽头系数的初值
           for k=1:N-K+1                             %迭代次数,490次。  
              y_k=yout(k:k+K-1);%;*exp(-j*an_w);                
                z_k=estimated_c*y_k';                %均衡器的输出信号
              yt(k)=z_k;
             gi_k=real(z_k)*(1+R2-real(z_k)^2);                     %误差信号,即期望(检测器输出)-均衡器的输出
             gq_k=imag(z_k)*(1+R2-imag(z_k)^2);   
             g_k=gi_k+j*gq_k;
             e_k=g_k-z_k;
               mse(k)=abs(e_k)^2/2;                       %误差的平方
               estimated_c=estimated_c+delta_k*y_k*e_k;  %LMS算法的核心表达式。
            end;
      if(jt==1)  end;
    mse_av=mse_av+mse;                     %均方误差的累加。
end;
mse_av=mse_av/Num_of_realizations;          %取平均
figure(1);
plot(mse_av);
figure(3);
plot(real(yt),imag(yt),'*');   %保留500个点数

⌨️ 快捷键说明

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