Pulse Doppler radar system simulation using MATLAB

57 ビュー (過去 30 日間)
Arshia Tehrani
Arshia Tehrani 2021 年 5 月 18 日
How to code this project in MATLAB
I'd tried coding this project (prob. 3-2, third paragraph) in MATLAB through this tutorial :
I'd changed PRF to 100 and pulse width to 5e-4 , And made Velocity of target one dimensional:
waveform = phased.RectangularWaveform('SampleRate',5e6,...
'PulseWidth',5e-4,'OutputFormat','Pulses',...
'NumPulses',1,'PRF',100);
target = phased.RadarTarget('Model','Nonfluctuating',...
'MeanRCS',1,'OperatingFrequency',1e9);
targetpos = phased.Platform('InitialPosition',[1000; 0; 0],...
'Velocity',[-100; 0; 0]);
antenna = phased.IsotropicAntennaElement(...
'FrequencyRange',[5e8 5e9]);
transmitter = phased.Transmitter('PeakPower',5e3,'Gain',20,...
'InUseOutputPort',true);
transpos = phased.Platform('InitialPosition',[0;0;0],...
'Velocity',[0;0;0]);
radiator = phased.Radiator('OperatingFrequency',1e9,'Sensor',antenna);
collector = phased.Collector('OperatingFrequency',1e9,'Sensor',antenna);
channel = phased.FreeSpace('SampleRate',waveform.SampleRate,...
'OperatingFrequency',1e9,'TwoWayPropagation',false);
receiver = phased.ReceiverPreamp('Gain',0,'LossFactor',0,...
'SampleRate',5e6,'NoiseFigure',5,...
'EnableInputPort',true,'SeedSource','Property','Seed',1e3);
I did not change anything here :
NumPulses = 10;
sig = waveform(); % get waveform
transpos = transpos.InitialPosition; % get transmitter position
rxsig = zeros(length(sig),NumPulses);
% transmit and receive ten pulses
for n = 1:NumPulses
% update target position
[tgtpos,tgtvel] = targetpos(1/waveform.PRF);
[tgtrng,tgtang] = rangeangle(tgtpos,transpos);
tpos(n) = tgtrng;
[txsig,txstatus] = transmitter(sig); % transmit waveform
txsig = radiator(txsig,tgtang); % radiate waveform toward target
txsig = channel(txsig,transpos,tgtpos,[0;0;0],tgtvel); % propagate waveform to target
txsig = target(txsig); % reflect the signal
% propagate waveform from the target to the transmiter
txsig = channel(txsig,tgtpos,transpos,tgtvel,[0;0;0]);
txsig = collector(txsig,tgtang); % collect signal
rxsig(:,n) = receiver(txsig,~txstatus); % receive the signal
end
prf = waveform.PRF;
fs = waveform.SampleRate;
fasttime = unigrid(0,1/fs,1/prf,'[)');
rangebins = (physconst('LightSpeed')*fasttime)/2;
probfa = 1e-9;
NoiseBandwidth = 5e6/2;
npower = noisepow(NoiseBandwidth,...
receiver.NoiseFigure,receiver.ReferenceTemperature);
thresh = npwgnthresh(probfa,NumPulses,'noncoherent');
thresh = sqrt(npower*db2pow(thresh));
[pks,range_detect] = findpeaks(pulsint(rxsig,'noncoherent'),...
'MinPeakHeight',thresh,'SortStr','descend');
range_estimate = rangebins(range_detect(1));
ts = rxsig(range_detect(1),:).';
[Pxx,F] = periodogram(ts,[],256,prf,'centered');
plot(F,10*log10(Pxx))
grid
xlabel('Frequency (kHz)')
ylabel('Power (dB)')
title('Periodogram Spectrum Estimate')
[Y,I] = max(Pxx);
lambda = physconst('LightSpeed')/1e9;
tgtspeed = dop2speed(F(I)/2,lambda);
fprintf('Estimated range of the target is %4.2f meters.\n',...
range_estimate)
fprintf('Estimated target speed is %3.1f m/sec.\n',tgtspeed)
if F(I)>0
fprintf('The target is approaching the radar.\n')
else
fprintf('The target is moving away from the radar.\n')
end
I really have no idea why this new pulse give me this output :
Estimated range of the target is 750350.54 meters.
Estimated target speed is -4.9 m/sec.
The target is moving away from the radar.
I would be appreciated if anyone could give me an advice or a solution.
Many thanks!

回答 (0 件)

カテゴリ

Help Center および File ExchangeDetection, Range and Doppler Estimation についてさらに検索

製品


リリース

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by