29 lines
1.2 KiB
Matlab
29 lines
1.2 KiB
Matlab
function [w_hybrid, F_RF] = algo_hybrid_omp(w_opt, A_dic, N_RF, a_target, R_in)
|
|
% algo_hybrid_omp: 基于 OMP 模拟选择 + 数字基带 MVDR 抗干扰的混合波束成形
|
|
% 核心改进:引入等效信道与基带抗干扰机制
|
|
|
|
% --- 阶段 1:OMP 寻找最优模拟预编码矩阵 F_RF ---
|
|
residual = w_opt;
|
|
F_RF = [];
|
|
for k = 1:N_RF
|
|
projection = A_dic' * residual;
|
|
[~, max_idx] = max(abs(projection));
|
|
F_RF = [F_RF, A_dic(:, max_idx)];
|
|
% 临时最小二乘用于更新 OMP 残差
|
|
F_BB_temp = pinv(F_RF) * w_opt;
|
|
residual = w_opt - F_RF * F_BB_temp;
|
|
end
|
|
|
|
% --- 阶段 2:大招!数字基带 MVDR 深度抗干扰 ---
|
|
% 计算通过模拟网络后的 "等效导向矢量" (4x1)
|
|
a_eff = F_RF' * a_target;
|
|
% 计算通过模拟网络后的 "等效干扰加噪声协方差矩阵" (4x4)
|
|
R_eff = F_RF' * R_in * F_RF;
|
|
|
|
% 在 4 维数字域计算最优基带权重,强行压制漏入的干扰
|
|
F_BB_mvdr = (inv(R_eff) * a_eff) / (a_eff' * inv(R_eff) * a_eff);
|
|
|
|
% 最终混合权重
|
|
w_hybrid = F_RF * F_BB_mvdr;
|
|
w_hybrid = w_hybrid / norm(w_hybrid); % 归一化
|
|
end |