匹配滤波matlab,Matched Filtering

匹配滤波matlab,Matched FilteringMatchedFilte Placeanisotr 0 0 0 Then pl

Matched Filtering to Improve SNR for Target Detection

This example shows how to improve the SNR by performing matched filtering.

Place an isotropic antenna element at the global origin (0;0;0). Then, place a target with a nonfluctuating RCS of 1 square meter approximately 7 km from the transmitter at (5000;5000;10). Set the operating (carrier) frequency to 10 GHz. To simulate a monostatic radar, set the InUseOutputPort property on the transmitter to true. Calculate the range and angle from the transmitter to the target.

antenna = phased.IsotropicAntennaElement(‘FrequencyRange’,[5e9 15e9]);

transmitter = phased.Transmitter(‘Gain’,20,’InUseOutputPort’,true);

fc = 10e9;

target = phased.RadarTarget(‘Model’,’Nonfluctuating’,…

‘MeanRCS’,1,’OperatingFrequency’,fc);

txloc = [0;0;0];

tgtloc = [5000;5000;10];

transmitterplatform = phased.Platform(‘InitialPosition’,txloc);

targetplatform = phased.Platform(‘InitialPosition’,tgtloc);

[tgtrng,tgtang] = rangeangle(targetplatform.InitialPosition,…

transmitterplatform.InitialPosition);

Create a rectangular pulse waveform 25 μs in duration with a PRF of 10 kHz. Use a single pulse for this example. Determine the maximum unambiguous range for the given PRF. Use the radar equation to determine the peak power required to detect a target. This target has an RCS of 1 square meter at the maximum unambiguous range for the transmitter operating frequency and gain. The SNR is based on a desired false-alarm rate of 1e-6 for a noncoherent detector.

waveform = phased.RectangularWaveform(‘PulseWidth’,25e-6,…

‘OutputFormat’,’Pulses’,’PRF’,10e3,’NumPulses’,1);

c = physconst(‘LightSpeed’);

maxrange = c/(2*waveform.PRF);

SNR = npwgnthresh(1e-6,1,’noncoherent’);

lambda = physconst(‘LightSpeed’)/target.OperatingFrequency;

Ts = 290;

dbterms = db2pow(SNR – 2*transmitter.Gain);

Pt = (4*pi)^3*physconst(‘Boltzmann’)*Ts/waveform.PulseWidth/target.MeanRCS/(lambda^2)*maxrange^4*dbterms;

Set the peak transmit power to the output value from the radar equation.

transmitter.PeakPower = Pt;

Create radiator and collector objects that operate at 10 GHz. Create a free space path for the propagation of the pulse to and from the target. Then, create a receiver and a matched filter for the rectangular waveform.

radiator = phased.Radiator(‘PropagationSpeed’,c,…

‘OperatingFrequency’,fc,’Sensor’,antenna);

channel = phased.FreeSpace(‘PropagationSpeed’,c,…

‘OperatingFrequency’,fc,’TwoWayPropagation’,false);

collector = phased.Collector(‘PropagationSpeed’,c,…

‘OperatingFrequency’,fc,’Sensor’,antenna);

receiver = phased.ReceiverPreamp(‘NoiseFigure’,0,…

‘EnableInputPort’,true,’SeedSource’,’Property’,’Seed’,2e3);

filter = phased.MatchedFilter(…

‘Coefficients’,getMatchedFilter(waveform),…

‘GainOutputPort’,true);

After you create all the objects that define your model, you can propagate the pulse to and from the target. Collect the echo at the receiver, and implement the matched filter to improve the SNR.

Generate waveform.

wf = waveform();

Transmit waveform.

[wf,txstatus] = transmitter(wf);

Radiate pulse toward the target.

wf = radiator(wf,tgtang);

Propagate pulse toward the 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);

Receive target echo.

rx_puls = receiver(wf,~txstatus);

[mf_puls,mfgain] = filter(rx_puls);

Get group delay of matched filter.

Gd = length(filter.Coefficients)-1;

The group delay is constant.

Shift the matched filter output.

mf_puls=[mf_puls(Gd+1:end); mf_puls(1:Gd)];

subplot(2,1,1)

t = unigrid(0,1e-6,1e-4,'[)’);

rangegates = c.*t;

rangegates = rangegates/2;

plot(rangegates,abs(rx_puls))

title(‘Received Pulse’)

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

e52420b87b6f0855d30c5589f441d126.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202940.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午10:57
下一篇 2026年3月19日 下午10:58


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号