46 lines
1.3 KiB
Matlab
46 lines
1.3 KiB
Matlab
function [ echo_rd_mtx, stat_RD, sigma_n_o ] = doppler_process_MF(echo_r_mtx, sigma_n, gamma)
|
|
% Doppler processing for echo data using matching filter
|
|
%
|
|
% Usage:
|
|
% [echo_rd_mtx, stat_RD, sigma_n_o] = doppler_process_MF(echo_r_mtx, sigma_n, gamma)
|
|
%
|
|
% Inputs:
|
|
% echo_r_mtx: Range processing echo data
|
|
% sigma_n: Input noise standard deviation
|
|
% gamma: Compressed ratio(0.5)
|
|
%
|
|
% Outputs:
|
|
% echo_rd_mtx: Range-doppler processing echo data
|
|
% stat_RD: Range-doppler statistics
|
|
% sigma_n_o: Output noise standard deviation
|
|
|
|
|
|
% parameters
|
|
if nargin < 3
|
|
gamma = 0.5;
|
|
end
|
|
[lenA, lenR, M] = size(echo_r_mtx);
|
|
N = round(M / gamma);
|
|
|
|
% generate mtx
|
|
F_ori = dftmtx(N);
|
|
F = F_ori(1:M,:);
|
|
multiple_d = F(:,1)' * F(:,1);
|
|
|
|
% doppler matched filtering
|
|
echo_rd_mtx = zeros(lenA, lenR, N);
|
|
for numA = 1: lenA
|
|
for numR = 1: lenR
|
|
sample = squeeze(echo_r_mtx(numA, numR, :));
|
|
dpl_temp = transpose(F) * sample;
|
|
dpl_norm = fftshift(dpl_temp ./ multiple_d);
|
|
echo_rd_mtx(numA, numR, :) = dpl_norm;
|
|
end
|
|
end
|
|
|
|
% calculate output noise
|
|
sigma_n_o = sqrt(sigma_n^2 / multiple_d);
|
|
stat_RD = abs(echo_rd_mtx ./ sigma_n_o).^2;
|
|
|
|
end
|