73 lines
1.5 KiB
Matlab
73 lines
1.5 KiB
Matlab
% 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
|
|
|
|
|