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

📄 cma.m

📁 一种用于信道均衡的盲均衡恒模算法,具有较好的ISI和较快的收敛速度
💻 M
字号:
%说明:CMA算法,性能由ISI表示
clc;
clear all;
close all;
K=11;%抽头个数
delta=0.000015;%迭代步长因子
delta1=0.015;%迭代步长因子
Num_of_realizations=1;%学习次数
SNR=30;%输入信噪比
sgma=1;%输入信号功率 
N=15000;%数据长度
d=1;%最小欧式距离
Fd=1000;%波特率
Fs=1000;%采样速率
numoferr=0; 
sum=0;
%load chan10 C
%actual_isi=C(1:2:end).';
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.005-0.004j 0.009+0.030j -0.024-0.104j 0.854+0.520j -0.218+0.273j 0.049-0.074j -0.016+0.020j];
%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.2+0.3j -0.5+0.4j 0.7-0.6j 0.4+0.3j 0.2+0.1j -0.1+0.2j];
%actual_isi=[1 0.1294-0.483*j]
%actual_isi=[0.227 0.460 0.688 0.460 0.227]
%actual_isi=[2-0.4j 1.5+1.8j 1 1.2-1.3j 0.8+1.6j]
ISI_av=zeros(1,N-K+1);
M=16;%进制数调制 
for jt=1:Num_of_realizations
    %产生信源
    a=qam_gen(M,N,d,Fd,Fs); 
    R=mean(abs(a).^4)/mean(abs(a).^2);%计算常模数R
    a1=real(a);
    a2=imag(a);
    figure(1)
    plot(a1,a2,'*r');
    title('(1)原始的星座图')
    if(jt==1) 
    end;
    x1=conv(actual_isi,a);  %序列通过有ISI的信道滤波器
    x=awgn(x1,SNR,sgma);%加噪声
    x1=real(x);
    x2=imag(x);
    figure(2)
    plot(x,'*r');
    grid on;
    title('(2)均衡器输入信号的星座图');
    W(1:K)=0; 
    W((K+1)/2)=1;%均衡器抽土系数的初始值
   ceta=0;
  
    %CMA算法
    for k=K:N
        x_k=x(k:-1:k-K+1);
         z_k=x_k*(W.');%*exp(-j*ceta);
        z(k-K+1)=z_k;
       % z_d=decide_16QAM(z_k,1);
%      ceta=ceta+delta1*imag(z_k*conj((z_d-z_k)));
       s(k)=z_k*(abs(z_k)^2-R);
        isi(k-K+1)=ISI(actual_isi,W);
        W=W-delta*s(k)*conj(x_k);
    end

    if(jt==1) 
    end;
    ISI_av=ISI_av+isi;%均方误差的累加。
%     sum=sum+numoferr/N;
end
% sum=sum/Num_of_realizations;;
ISI_av=ISI_av/Num_of_realizations; %取平均
z1=real(z);
z2=imag(z);
figure(3)
plot(z(N-800:N-K+1),'*k');
grid on;
%title('均衡后的星座图');

figure(4)
plot(10*log10(ISI_av))%画ISI,单位dB
xlabel('迭代次数');
ylabel('ISI(dB)');
%figure(5)
%plot(D)%画ISI,单位dB

⌨️ 快捷键说明

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