算法实现如下:
parameter:雷达参数设置。
antVet:目标点 对应的非相参积累天线数据。
function [angle,doa_abs] = caponMethod(parameter,antVec)
txAntenna = parameter.txAntenna; % 发射天线 [1 1]
rxAntenna = parameter.rxAntenna; % 接收天线 [1 1 1 1]
txNum = length(txAntenna); % 发射天线个数 2
rxNum = length(rxAntenna); % 接收天线个数 4
lambda = parameter.lambda; % 波长
dx = parameter.dx; % 天线间隔
virtualAntenna = parameter.virtualAntenna; % 虚拟天线个数
Rx = antVec * antVec' / virtualAntenna;
deg = -90:0.1:90;
a = zeros(virtualAntenna,1);
kk = 1;
for degscan = deg
for txId = 1:txNum
for rxId = 1:rxNum
virtualAntennaId = (txId-1) * rxNum + rxId - 1;
dphi = 2 * pi / lambda * dx * virtualAntennaId * sind(degscan);
a((txId-1) * rxNum + rxId) = exp(-1i * dphi);
end
end
RxInv = inv(Rx); % inv矩阵的逆
P_out(kk) = 1/(a'*RxInv*a);
kk = kk + 1;
end
doa_abs = abs(P_out);
[pk,loc]=max(doa_abs);
angle = deg(loc);
end