Question s in End-to-End Radar System
5 views (last 30 days)
Show older comments
I'm replacing some parameters in End-to-End Radar System example with my needs.
Now I just replacing:
'waveform' to LinearFMWaveform
'PRF' to 1/160e-6
'sampling frequency' to 1e7
'Operating Frequency' to 77GHz
'Pulse Width' to 60e-6
with FMCW automotive radar.
But even in range estimation, I can't find the peak in the correct range index.
clear;close all;clc;
fc = 77e9;
fs = 1e7;
PRT = 160e-6;
T_sweep = 60e-6;
waveform = phased.LinearFMWaveform('PulseWidth',T_sweep,...
'PRF',1/PRT,'OutputFormat','Pulses','NumPulses',1,'SampleRate',fs);
antenna = phased.IsotropicAntennaElement('FrequencyRange',[1e9 81e9]);
target = phased.RadarTarget('Model','Nonfluctuating','MeanRCS',0.5,...
'PropagationSpeed',physconst('LightSpeed'),'OperatingFrequency',fc);
antennaplatform = phased.Platform('InitialPosition',[0;0;0],'Velocity',[0;0;0]);
targetplatform = phased.Platform('InitialPosition',[7000; 5000; 0],...
'Velocity',[0;0;0]);
[tgtrng,tgtang] = rangeangle(targetplatform.InitialPosition,...
antennaplatform.InitialPosition);
Pd = 0.9;
Pfa = 1e-6;
numpulses = 10;
SNR = albersheim(Pd,Pfa,10);
maxrange = 1.5e4;
lambda = physconst('LightSpeed')/fc;
tau = waveform.PulseWidth;
Pt = radareqpow(lambda,maxrange,SNR,tau,'RCS',0.5,'Gain',20);
transmitter = phased.Transmitter('PeakPower',50e3,'Gain',20,'LossFactor',0,...
'InUseOutputPort',true,'CoherentOnTransmit',true);
radiator = phased.Radiator('Sensor',antenna,...
'PropagationSpeed',physconst('LightSpeed'),'OperatingFrequency',fc);
collector = phased.Collector('Sensor',antenna,...
'PropagationSpeed',physconst('LightSpeed'),'Wavefront','Plane',...
'OperatingFrequency',fc);
receiver = phased.ReceiverPreamp('Gain',20,'NoiseFigure',2,...
'ReferenceTemperature',290,'SampleRate',fs,...
'EnableInputPort',true,'SeedSource','Property','Seed',1e3);
channel = phased.FreeSpace(...
'PropagationSpeed',physconst('LightSpeed'),...
'OperatingFrequency',fc,'TwoWayPropagation',false,...
'SampleRate',fs);
T = 1/waveform.PRF;
% Get antenna position
txpos = antennaplatform.InitialPosition;
% Allocate array for received echoes
rxsig = zeros(int16(fs*T),numpulses);
for n = 1:numpulses
% Update the target position
[tgtpos,tgtvel] = targetplatform(T);
% Get the range and angle to the target
[tgtrng,tgtang] = rangeangle(tgtpos,txpos);
% Generate the pulse
sig = waveform();
% Transmit the pulse. Output transmitter status
[sig,txstatus] = transmitter(sig);
% Radiate the pulse toward the target
sig = radiator(sig,tgtang);
% Propagate the pulse to the target in free space
sig = channel(sig,txpos,tgtpos,[0;0;0],tgtvel);
% Reflect the pulse off the target
sig = target(sig);
% Propagate the echo to the antenna in free space
sig = channel(sig,tgtpos,txpos,tgtvel,[0;0;0]);
% Collect the echo from the incident angle at the antenna
sig = collector(sig,tgtang);
% Receive the echo at the antenna when not transmitting
rxsig(:,n) = receiver(sig,~txstatus);
end
rxsig = pulsint(rxsig,'noncoherent');
t = unigrid(0,1/receiver.SampleRate,T,'[)');
rangegates = (physconst('LightSpeed')*t)/2;
plot(rangegates/1e3,rxsig)
hold on
xlabel('range (km)')
ylabel('Power');
ylim = get(gca,'YLim');
plot([tgtrng/1e3,tgtrng/1e3],[0 ylim(2)],'r')
hold off
![untitled999.png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/199200/untitled999.png)
Since every step in toolbox object is like blackbox.
Can you tell me what's going on? I've dealt with this for days.
Thank you very much!
0 Comments
Answers (1)
Kaushik Vasanth
on 15 Mar 2019
Hey,
I am not completely aware of whats happening when you are trying to calculate the range here.
Maybe you could use another method to calculate the range.
Take radar cube data and plot the magnitude spectrum for the received samples.
From this plot you can find out the beat frequency and use this value to calculate the range by using the formula:
R = (c*fb*tchirp)/2*BW
Hope this can solve the problem!
0 Comments
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!