function [range, range_idx] = get_range(s_T, s_R, r_0) global T_r delta_t len c range_t; % 只取第一个 T_r 的数据计算 range_N = T_r / delta_t; s_T_first = [s_T(1:range_N), zeros(1, len - range_N)]; s_R_first = [s_R(1:range_N), zeros(1, len - range_N)]; s_T_fft = fft(s_T_first, len); s_R_fft = fft(s_R_first, len); % 发射信号和回波信号做相关 p = ifft(s_R_fft .* conj(s_T_fft)); norm_p = real(p).^2 + imag(p).^2; [~, range_idx] = max(norm_p); range = range_t(range_idx) * c / 2; % fprintf("predict range = %f\n", range); % fprintf("origin range = %f\n", r_0); % fprintf("err = %f\n", range - r_0); % fprintf("\n"); end