DBF算法实现程序如下:
输入: parameter 是 毫米波雷达的参数设置。
antVec 是 目标点的8个虚拟天线的非相参积累数据。
function [angle,doa_abs] = dbfMethod(parameter,antVec)
txAntenna = parameter.txAntenna; % 发射天线 [1 1]
rxAntenna = parameter.rxAntenna; % 接收天线 [1 1 1 1]
virtualAntenna = parameter.virtualAntenna; % 虚拟天线个数 8
lambda = parameter.lambda; % 发射波长
txNum = length(txAntenna); % 发射天线个数
rxNum = length(rxAntenna); % 接收天线个数
dx = parameter.dx; % 接收天线水平间距
deg = -90:0.1:90; % 角度
weightVec = zeros(virtualAntenna,1); %
doa_dbf = zeros(length(deg),1); %
kk = 1;
for degscan = deg %
for txId = 1:txNum
for rxId = 1:rxNum
dphi = ((txId-1) * rxNum + rxId - 1) * 2 * pi / lambda * dx * sind(degscan); % 相位差
weightVec((txId-1) * rxNum + rxId) = exp(-1i * dphi); % 方向相量
end
end
doa_dbf(kk) = antVec'*weightVec; %加权
kk = kk + 1;
end
doa_abs = abs(doa_dbf);
[pk,loc]=max(doa_abs);
angle = deg(loc);
end