In this post What features can be used to estimate both azimuth and elevation angle using a deep learning model?, I have shared a signal model:
SOURCE_angles = doa(ii,:);
Ax = zeros(Mx, SOURCE_K);
Ay = zeros(My - 1, SOURCE_K);
for k = 1:2:SOURCE_K
Ax(:, k) = exp(-1i*2*pi*fc*dist*(1/cSpeed)*(0:Mx-1)' ...
*cosd(SOURCE_angles(k))*sind(SOURCE_angles(k+1)));
Ay(:, k) = exp(-1i*2*pi*fc*dist*(1/cSpeed)*(1:My-1)' ...
*sind(SOURCE_angles(k))*sind(SOURCE_angles(k+1)));
end
A = [Ax; Ay]; % Steering matrix of all sensors
% The Expected covariance matrix for a angle-pair
Ry_the = A*diag(ones(SOURCE_K,1))*A' + noise_power*eye(Mx+My-1);
% The Sampled covariance matrix for a angle-pair
S = sqrt(sVar)*randn(SOURCE_K, p).*exp(1i*(2*pi*fc*repmat((1:p)/fs, SOURCE_K, 1)));
X = A*S;
noiseCoeff = 1;
Eta = sqrt(noiseCoeff)*randn(Mx + My - 1, p);
Y = X + Eta;
Ry_sam = Y*Y'/p;
However, here I considered stationary targets but if I have to consider moving target then the signal model should include the doppler returns.
This is the modifications I did, and want to know if I have done it correctly?
n_pulses = 16;
M_vec = 1:n_pulses;
K = 3; % Number of targets
for k = 1:K
ndf(k) = -0.5 + (k - 1) / (K - 1);
end
nn = 1;
for current_ndf = ndf %%% ndf = normalized doppler returns
for m = M_vec
X_tg_m(m, nn) = exp(1i*2*pi*m*current_ndf);
end
nn = nn + 1;
end
G = size(doa,1);
for ii=1:G
SOURCE_angles = doa(ii,:);
Ax = zeros(Mx, size(M_vec,2)*K);
Ay = zeros(My - 1, size(M_vec,2)*K);
%%% NSF
idx = 1;
idy = 1;
for k = 1:2:SOURCE_K
Ax(:, idy:1:size(M_vec,2)*idx) = exp(1i*2*pi*fc*dist*(1/cSpeed)*(0:Mx-1)'*cosd(SOURCE_angles(k))*sind(SOURCE_angles(k+1))).*X_tg_m(:,idx)';
Ay(:, idy:1:size(M_vec,2)*idx) = exp(1i*2*pi*fc*dist*(1/cSpeed)*(1:My-1)'*sind(SOURCE_angles(k))*sind(SOURCE_angles(k+1))).*X_tg_m(:,idx)';
idx = idx + 1;
idy = idy + size(M_vec,2);
end
A = [Ax; Ay]; % Steering matrix of all sensors
% The Expected covariance matrix for a angle-pair
Ry_the = A*diag(ones(size(M_vec,2)*K,1))*A' + noise_power*eye(Mx+My-1); %dim: (Mx+My-1) x (Mx+My-1)
S = sqrt(sVar)*randn(size(M_vec,2)*K, p).*exp(1i*(2*pi*fc*repmat((1:p)/fs, size(M_vec,2)*K, 1)));
X = A*S;
noiseCoeff = 1;
Eta = sqrt(noiseCoeff)*randn(Mx + My - 1, p);
Y = X + Eta;
Ry_sam = Y*Y'/p;
end
The calculations of normalized doppler returns are taken from the paper
Mainly I am not sure should I include the doppler returns while calculating the array manifolds? Because doppler returns doesn't affect the phase shifts, so the expected covariance matrix will not be affected, but for the sampled covariance matrix since it is calculated based on the received signal, not including the doppler returns will probably lead to a wrong covariance matrix?