function [w_hybrid, F_RF] = algo_hybrid_robust_omp(w_opt, A_dic, N_RF, a_target, R) % 输入: % w_opt:理想数字波束(MVDR结果) % A_dic:字典 % N_RF:RF链数 [N, ~] = size(A_dic); residual = w_opt; % 初始残差 selected_index = []; % 已选原子 lambda = 0.01; % 正则化参数(关键) max_iter = N_RF; for iter = 1:max_iter % ========================= % Step1:相关性计算 % ========================= corr = abs(A_dic' * residual); % 找Top-2(而不是Top-1) [~, idx_sorted] = sort(corr, 'descend'); new_idx = idx_sorted(1:2); % 合并索引(避免重复) selected_index = unique([selected_index new_idx']); % ========================= % Step2:构造子字典 % ========================= A_selected = A_dic(:, selected_index); % ========================= % Step3:正则化最小二乘(核心改进) % ========================= x = (A_selected' * A_selected + lambda * eye(length(selected_index))) \ ... (A_selected' * w_opt); % ========================= % Step4:更新残差 % ========================= residual = w_opt - A_selected * x; % ========================= % Step5:提前停止(关键!) % ========================= if norm(residual) < 1e-3 break; end end % ========================= % 构造RF矩阵 % ========================= F_RF = A_dic(:, selected_index); % 模拟约束(只保留相位) F_RF = exp(1j * angle(F_RF)); % ========================= % 数字基带优化 % ========================= F_BB = pinv(F_RF) * w_opt; % 最终波束 w_hybrid = F_RF * F_BB; % 归一化 w_hybrid = w_hybrid / norm(w_hybrid); end