MMA是改进的CMA,有RCA和CMA的优点,还能对相位误差进行修正。
N = 5e5; % 仿真符号数
M = 16; % QAM16msg = randi([0 M-1],N,1); % 产生随机符号
tx = qammod(msg,M); % QAM调制test_snr = 20:5:30; % 信噪比测试% 模拟多径信道
h = [0.05,0.1+0.15*1j,0.9-0.15*1j,0.15,-0.1+0.2*1j,0.1+0.2*1j,-0.01+0.15*1j];ch = conv(tx,h,'same'); % 过信道mu = 3e-5; % 收敛步进% 输出
qout = zeros(length(ch),length(test_snr));for j = 1:length(test_snr)rx = awgn(ch,test_snr(j),'measured'); % 添加噪声wn = zeros(11,1); % 初始化横向滤波器系数wn(5) = 1; % 随机初始化for i = 1:length(rx)-10xn = flipud(rx(i:i+10)); % 均衡输入 xn,...,x2,x1,x0yn = sum(xn.*wn); % 均衡输出enr = real(yn)*(real(yn)^2-8.2);eni = imag(yn)*(imag(yn)^2-8.2);en = enr+eni*1i; % 均衡估计误差wn = wn - mu.*en*conj(xn);% 更新均衡系数qout(i,j) = yn; % 输出end end% 绘图
scatterplot(rx(end-1e4:end));
for i = 1:length(test_snr)scatterplot(qout(end-1e4:end,i));
en