function [ echo_r_mtx, sigma_n_o ] = range_process_MF(echo_mtx, A, sigma_n) % Range processing for echo data using matching filter % % Usage: % [echo_r_mtx, sigma_n_o] = range_process_MF(echo_mtx, A, sigma_n) % % Inputs: % echo_mtx: Original echo data % A: Chirp measurement matrix % sigma_n: Input noise standard deviation % % Outputs: % echo_r_mtx: Range processing echo data % sigma_n_o: Output noise standard deviation % parameters multiple_r = A(:, 1)' * A(:, 1); [M, N] = size(A); [lenA, M, lenP] = size(echo_mtx); % matched filtering echo_r_mtx = zeros(lenA, N, lenP); for numA = 1: lenA for numP = 1: lenP sr = echo_mtx(numA, :, numP); mf_res = A' * transpose(sr); mf_norm = mf_res ./ multiple_r; echo_r_mtx(numA, :, numP) = mf_norm; end end % calculate output noise sigma_n_o = sqrt(sigma_n^2 / multiple_r); end