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