% PRF: pulse repetition frequency % B: bandwidth % fs: sampling rate % D: duty ratio % gamma: compression ratio % A: chirp matrix % signal_t: transmitting beam function [ A, signal_t ] = generate_chirp_mtx(PRF, B, fs, D, gamma, sign_mid) % parameters if nargin < 5 gamma = 0.5; end if nargin < 6 sign_mid = 0; end Tr = 1 / PRF; Tp = Tr * D; K = B / Tp; % generate_signal N = Tr * fs; N_high = Tp * fs; N_mtx = round(N / gamma); signal_t = zeros(1, N); for i = 1: N_high tp = i * (1 / fs) - sign_mid * N_high / fs / 2; signal_t(1, i) = exp(1j * 2 * pi * 0.5 * K * tp .^ 2); end signal_t_2fs = zeros(1, N_mtx); for i = 1: round(N_high / gamma) tp = (i+1) * (1 / fs / 2) - sign_mid * N_high / fs / 2; signal_t_2fs(1, i) = exp(1j * pi * K * tp .^ 2); end % generate chirp matrix A = generate_matrix_by_signal2fs(transpose(signal_t_2fs)); end % generate chirp matrix when gamma=0.5 function [ mtx ] = generate_matrix_by_signal2fs(signal) mtx = []; l = round(length(signal) / 2); temp1 = signal(1:2:end); temp2 = circshift(signal(2:2:end), 1); if length(temp2) ~= length(temp1) temp2 = [temp2; 0]; end for i = 1:l t1 = circshift(temp1, i-1); t2 = circshift(temp2, i-1); if i - 1 > 0 t1(1:i - 1,1) = 0; end if i - 1 > 0 t2(1:i - 1,1) = 0; end mtx = [mtx,t1,t2]; end end