# LinearFM Target Range Detection with Matched Filter Error

3 Ansichten (letzte 30 Tage)
martin ernest am 13 Dez. 2019
Beantwortet: Honglei Chen am 31 Dez. 2019
Hi,
I have been working on learning how matched filters can be used in radar systems to improve SNR and detect targets at some particular range.
Following the example from: https://www.mathworks.com/help/phased/ug/matched-filtering.html, I can run and modify the "Matched Filtering to Improve SNR for Target Detection" without issue. However, when I try to replicate the result using a Linear FM Waveform, I cannot get the output figures to clearly show the same type of result as for the rectangular waveform.
I have tried varying bandwidths, pulse-widths, range resolution, prf, plot parameters, etc, but I am at a loss for what is going wrong at this point. Maybe there's something going on with the plot that I don't understand? When running the below, there is something that appears to be working, as there appears to be an unfilterd pulse at 1km, but that doesn't match up with the true range. The full .m file is below, and I greatly appreciate any help or suggestions that anyone can offer.
Running MATLAB Version: 9.3.0.713579 (R2017b)
clear all;
fc=10e9;
txloc = [0;0;0];
tgtloc = [2000;0000;10];
tgt_rcs = 1;
%tau = 1e-4;
%prf = 5e3;
c = physconst('LightSpeed');
%maxrange = c/(2*prf);
maxrange = 8000;
prf = c/(2*maxrange);
pfa = 1e-6;
SNR = npwgnthresh(pfa,1,'noncoherent');
Pg = 20; %Radar power gain
range_res = 50;
lambda = c/fc;
pulse_bw = c/(2*range_res);
tau = 20/pulse_bw;
fs = 2*pulse_bw;
%fs=1e6;
minrng = c*tau/2;
%Select waveform type - here is a Linear FMWaveform being set up
waveform = phased.LinearFMWaveform(...
'PulseWidth',tau,...
'PRF',prf,...
'SampleRate',fs,...
'OutputFormat','Pulses','NumPulses',1,'SweepBandwidth',pulse_bw);
%Antenna and transmitter parameters - isotropic
antenna = phased.IsotropicAntennaElement('FrequencyRange',[5e9 15e9]);
transmitter = phased.Transmitter('Gain',Pg,'InUseOutputPort',true);
%Target rcs and rcs model parameter
'MeanRCS',tgt_rcs,'OperatingFrequency',fc);
%Calculate required transmit power to meet max range parameter
tau,'RCS',target.MeanRCS,'Gain',transmitter.Gain);
transmitter.PeakPower = Pt;
%Setting up initial transmitter and target locations and angle
transmitterplatform = phased.Platform('InitialPosition',txloc);
targetplatform = phased.Platform('InitialPosition',tgtloc);
[tgtrng,tgtang] = rangeangle(targetplatform.InitialPosition,...
transmitterplatform.InitialPosition);
%Set up radiator and collector objects operating at 10GHz
'OperatingFrequency',fc,'Sensor',antenna);
collector = phased.Collector('PropagationSpeed',c,...
'OperatingFrequency',fc,'Sensor',antenna);
%Create free-space path for propogation of the pulse to and from the
%target
channel = phased.FreeSpace('PropagationSpeed',c,...
'OperatingFrequency',fc,'TwoWayPropagation',false);
'EnableInputPort',true,'SeedSource','Property','Seed',2e3, 'SampleRate',fs);
%Generate the waveform
wf = waveform();
%Transmit the waveform
[wf,txstatus] = transmitter(wf);
%Propogate pulse toward target
wf = channel(wf,txloc,tgtloc,[0;0;0],[0;0;0]);
%Reflect it off the target
wf = target(wf);
%Propagate the pulse back to transmitter
wf = channel(wf,tgtloc,txloc,[0;0;0],[0;0;0]);
%Collect the echo
wf = collector(wf,tgtang);
wav = getMatchedFilter(waveform);
filter = phased.MatchedFilter('Coefficients',wav,...
'SpectrumWindow','Taylor','GainOutputPort',true);
[mf_puls,mfgain] = filter(rx_puls);
%Group delay of matched filter
Gd = length(filter.Coefficients)-1;
matchingdelay = size(wav,1)-1;
%shift the matched filter output and plot
mf_puls=[mf_puls(Gd+1:end); mf_puls(1:Gd)];
subplot(2,1,1)
t = unigrid(0,1/fs,1/prf,'[)');
rangegates = c.*t;
rangegates = rangegates/2;
%Plot graph
plot(rangegates,abs(rx_puls))
ylabel('Amplitude')
hold on
plot([tgtrng, tgtrng], [0 max(abs(rx_puls))],'r')
subplot(2,1,2)
plot(rangegates,abs(mf_puls))
title('With Matched Filtering')
xlabel('Meters')
ylabel('Amplitude')
hold on
plot([tgtrng, tgtrng], [0 max(abs(mf_puls))],'r')
hold off
##### 0 Kommentare-2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

### Akzeptierte Antwort

Honglei Chen am 31 Dez. 2019
You forgot to set the sample rate in channel accordingly. Replace your channel definition as
channel = phased.FreeSpace('PropagationSpeed',c,...
'OperatingFrequency',fc,'TwoWayPropagation',false,'SampleRate',fs);
and you will have expected result.
HTH
##### 0 Kommentare-2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

### Kategorien

Mehr zu Pulsed Waveforms finden Sie in Help Center und File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by