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

📄 cma.m

📁 基本的常数模算法
💻 M
字号:
clear all
N=1000;
L=12;                                 
m=4;  %输入信号的长度                                  
mu=0.00001; %设置迭代步长
%c=[-1 3 10 7 3 -1 -5 2];  
%c=[0.2 0.5 1 -0.1];
%c=zeros(1,21);c(1)=1;c(21)=0.599971;
%c(1)=exp(-0.7*i);c(2)=0;c(3)=0;c(4)=0.3*exp(-1.8*i);
% c=zeros(1,68);c(1)=1;c(8)=0.26311;c(40)=0.151214;c(68)=0.391599;
%c=zeros(1,21);c(1)=1;c(21)=0.599971;
%c=[0.3132 -0.1040 0.8908 0.3134 0.1];   %信道
% c=[0.3132 -0.1040 0.8908 0.3134];%信道
c(1)=exp(-0.7*i);c(2)=0;c(3)=0;c(4)=0.3*exp(-1.8*i);

mse_av1=zeros(1,N-L);

aa=[0:m-1];%   aa=[0 0 0 0]在循环前初始值的设定
bb=qammod(aa,m);
R=sum(abs(bb.^4))/sum(abs(bb.^2)); % sum是一个求和的符号
snr=25;                                 
times=10;                               
for j=1:times;
    j
    s=randint(1,N,m);%随机产生一个一行N列的0到4之间的整数序列,作为输入的数字信号 
    a=qammod(s,m); %显示输入信号的星座图
    x=filter(c,1,a);%filter是滤波器,表示的是信号通过信道
    y= awgn(x,snr,'measured'); % 对信号加入一个加性白噪声                              
    W1=zeros(1,L);W1(L/2)=1;%中心抽头
    for k=1:N-L
        y_k1=y(k+L-1:-1:k);  
        z1(k)=W1*y_k1.'; 
        M(k)=abs(z1(k))-sqrt(R);
%         e1(k)=z1(k)*(R-abs(z1(k))^2);  
        e1(k)=tanh(M(k));
        W1=W1+mu*(1/(cosh(M(k)))^2)*conj(y_k1)*sign(z1(k));
%         W1=W1+mu*conj(y_k1)*(e1(k));
        mse1(k)=min(abs(e1(k))).^2;
    end
    mse_av1=mse_av1+mse1; 
end
mse_av1=mse_av1/times;

plot(40*log10(mse_av1),'r')
xlabel('迭代次数','fontsize',14)
ylabel('均方误差','fontsize',14)
grid on
hold off
scatterplot(a,1,0,'k*')
title('发射信号')
xlabel('实部','fontsize',14)
ylabel('虚部','fontsize',14)
grid on
scatterplot(y,1,0,'k*')
title('均衡器输入信号')
xlabel('实部','fontsize',14)
ylabel('虚部','fontsize',14)
grid on
scatterplot(z1,1,0,'k*')
title('CMA信号')
xlabel('实部','fontsize',14)
ylabel('虚部','fontsize',14)
grid on

⌨️ 快捷键说明

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