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