上传文件至「Graduation Design Matlab」
This commit is contained in:
@@ -0,0 +1,19 @@
|
|||||||
|
function [w_mvdr] = algo_digital_mvdr(a_target, R_in)
|
||||||
|
% algo_digital_mvdr: 基于最小方差无失真响应的纯数字波束成形
|
||||||
|
% 输入:
|
||||||
|
% a_target: 目标方向的导向矢量
|
||||||
|
% R_in: 干扰加噪声协方差矩阵
|
||||||
|
% 输出:
|
||||||
|
% w_mvdr: 最优数字波束权重
|
||||||
|
|
||||||
|
% 求协方差矩阵的逆
|
||||||
|
R_inv = inv(R_in);
|
||||||
|
|
||||||
|
% MVDR 核心公式
|
||||||
|
numerator = R_inv * a_target;
|
||||||
|
denominator = a_target' * R_inv * a_target;
|
||||||
|
w_mvdr = numerator / denominator;
|
||||||
|
|
||||||
|
% 功率归一化
|
||||||
|
w_mvdr = w_mvdr / norm(w_mvdr);
|
||||||
|
end
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
function [w_hybrid, F_RF] = algo_hybrid_dft(w_opt, A_dic, N_RF, a_target, R_in)
|
||||||
|
% algo_hybrid_dft: 基于最大相关性(DFT)选择 + 数字基带 MVDR 的基线算法
|
||||||
|
|
||||||
|
% 1. 找出与理想波束相关性最大的 N_RF 个原子
|
||||||
|
projection = A_dic' * w_opt;
|
||||||
|
[~, sort_idx] = sort(abs(projection), 'descend');
|
||||||
|
F_RF = A_dic(:, sort_idx(1:N_RF));
|
||||||
|
|
||||||
|
% 2. 同样使用数字基带 MVDR 压制干扰
|
||||||
|
a_eff = F_RF' * a_target;
|
||||||
|
R_eff = F_RF' * R_in * F_RF;
|
||||||
|
F_BB_mvdr = (inv(R_eff) * a_eff) / (a_eff' * inv(R_eff) * a_eff);
|
||||||
|
|
||||||
|
% 3. 合并
|
||||||
|
w_hybrid = F_RF * F_BB_mvdr;
|
||||||
|
w_hybrid = w_hybrid / norm(w_hybrid);
|
||||||
|
end
|
||||||
|
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
function [a] = gen_a(theta, par)
|
||||||
|
|
||||||
|
a = exp(-1j*2*pi*par.delta_d*sind(theta)/par.labmda);
|
||||||
|
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user