算法实现如下:
parameter:雷达参数设置。
antVet:目标点 对应的非相参积累天线数据。
function [angle,doa_abs] = caponMethod(parameter,antVec)txAntenna = parameter.txAntenna; % 发射天线 [1 1]rxAntenna = parameter.rxAntenna; % 接收天线 [1 1 1 1]txNum = length(txAntenna); % 发射天线个数 2rxNum = length(rxAntenna); % 接收天线个数 4lambda = 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 = degfor txId = 1:txNumfor rxId = 1:rxNumvirtualAntennaId = (txId-1) * rxNum + rxId - 1;dphi = 2 * pi / lambda * dx * virtualAntennaId * sind(degscan);a((txId-1) * rxNum + rxId) = exp(-1i * dphi);endendRxInv = inv(Rx); % inv矩阵的逆P_out(kk) = 1/(a'*RxInv*a);kk = kk + 1;enddoa_abs = abs(P_out);[pk,loc]=max(doa_abs);angle = deg(loc);end