Range estimation for radar system.
Ältere Kommentare anzeigen
I am writting a code on range estimation of radar syatem. I an sending a data frim transmitter and receive it after some delay. Now I write it as
% Parameters
fs = 1e6; % Sampling frequency (1 MHz)
T = 1e-3; % Pulse duration (1 ms)
fc = 10e6; % Carrier frequency (10 MHz)
PRI = 10e-3; % Pulse repetition interval (10 ms)
pulse_width = 1e4; % Pulse width (1 us)
c = 3e8; % Speed of light (m/s)
target_range1 = 200;
target_range2 = 100;
target_rcs = 1; % Target radar cross-section (RCS) in square meters
SNR_dB = 20; % Signal-to-noise ratio (in dB)
% Create a time vector for one pulse
num_symbols = 100; % Number of QAM symbols
snr_dB = 20; % Signal-to-noise ratio in dB
sigma_x=1;
% Generate QAM symbols
qam_order = 32; % 16-QAM
qam_symbols = randi([0, qam_order-1],1, num_symbols);
transmitted_pulse= qam_symbols;
% Simulate received signal with target echo and noise
target_delay1 = 2 * target_range1 / c; % Two-way propagation delay
target_delay2 = 2 * target_range2 / c; % Two-way propagation delay
% received_pulse = zeros(1, length(t_pulse));
% Time delay in samples
Fs = 1 / (target_delay1 + (1 / fc)); % Sampling frequency based on the delay and carrier frequency
time_delay_samples = round(target_delay1 * Fs); % Round to the nearest integer for discrete time
shifted_signal = circshift(transmitted_pulse, time_delay_samples);
% Add Gaussian noise to the received signal to achieve the desired SNR
SNR_linear = 10^(SNR_dB / 10); % Convert SNR from dB to linear scale
noise_power = var(shifted_signal) / SNR_linear; % Calculate noise power
noise = sqrt(noise_power) .* randn(1, length(shifted_signal)); % Generate noise
received_signal_with_noise = shifted_signal + noise;
% data indexing
transmitted_pulse1=reshape(transmitted_pulse,1,[]);
shifted_signal1=reshape(shifted_signal,1,[]);
received_signal_with_noise1=reshape(received_signal_with_noise,1,[]);
% Matched filtering (correlation) to detect target
correlation_result = conv(received_signal_with_noise1, fliplr(transmitted_pulse1));
threshold = max(correlation_result) * 0.5; % Adjust the threshold as needed
% Find target detection point
detection_index = find(correlation_result > threshold, 1);
del_t=detection_index/fs; %detection index*sampling frequency
% Calculate detected target range
detected_target_range = c * del_t /2;
% Display results
fprintf('Detected Target Range: %.2f meters\n', detected_target_range);
Here I am using match filter for detection. The code is running but not giving the proper range estimation. Kindly help me to to understand where I am missing.
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Detection, Range and Doppler Estimation finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!