How can I use the step function for the swerling models with the UPDATERCS?

2 views (last 30 days)
Dear Sirs/Madams, Could you please tell me how to use the step function with UPDATERCS? I would like to apply swerling models to end-to-end radar system example http://www.mathworks.com/help/phased/gs/end-to-end-radar-system.html but I couldn't understand how to do from the explanations of mathworks' step function and radar.target. Could you please send me a short example about UPDATERCS on step function or explain me how to do with details ASAP? In fact I would be very happy if you explain me the issue on the end-to-end radar system example.
Error: Error using phased.RadarTarget/step Not enough input arguments; expected 2 (in addition to the object handle), got 1.
Error in rs2 (line 54) sig = step(htgt,sig);
full code:
hwav = phased.RectangularWaveform('PulseWidth',1e-6,'PRF',5e3,'OutputFormat','Pulses','NumPulses',1);
hant = phased.IsotropicAntennaElement('FrequencyRange',[1e9 10e9]);
htgt = phased.RadarTarget('Model','Nonfluctuating','MeanRCS',0.5,'PropagationSpeed',physconst('LightSpeed'),'OperatingFrequency',4e9);
htxplat = phased.Platform('InitialPosition',[0;0;0],'Velocity',[0;0;0],'OrientationAxes',[1 0 0;0 1 0;0 0 1]);
htgtplat = phased.Platform('InitialPosition',[7000; 5000; 0],'Velocity',[-15;-10;0]);
[tgtrng,tgtang] = rangeangle(htgtplat.InitialPosition,htxplat.InitialPosition);
htx = phased.Transmitter('PeakPower',50e3,'Gain',20,'LossFactor',0,'InUseOutputPort',true,'CoherentOnTransmit',true);
hrad = phased.Radiator('Sensor',hant,'PropagationSpeed',physconst('LightSpeed'),'OperatingFrequency',4e9);
hcol = phased.Collector('Sensor',hant,'PropagationSpeed',physconst('LightSpeed'),'Wavefront','Plane','OperatingFrequency',4e9);
hrec = phased.ReceiverPreamp('Gain',20,'NoiseFigure',2,'ReferenceTemperature',290,'SampleRate',1e6,'EnableInputPort',true,'SeedSource','Property','Seed',1e3);
hspace = phased.FreeSpace('PropagationSpeed',physconst('LightSpeed'),'OperatingFrequency',4e9,'TwoWayPropagation',false,'SampleRate',1e6);
% Time step between pulses
T = 1/hwav.PRF;
% Get antenna position
txpos = htxplat.InitialPosition;
% Allocate array for received echoes
rxsig = zeros(hwav.SampleRate*T,numpulses);
for n = 1:numpulses
% Update the target position
[tgtpos,tgtvel] = step(htgtplat,T);
% Get the range and angle to the target
[tgtrng,tgtang] = rangeangle(tgtpos,txpos);
% Generate the pulse
sig = step(hwav);
% Transmit the pulse. Output transmitter status
[sig,txstatus] = step(htx,sig);
% Radiate the pulse toward the target
sig = step(hrad,sig,tgtang);
% Propagate the pulse to the target in free space
sig = step(hspace,sig,txpos,tgtpos,[0;0;0],tgtvel);
% Reflect the pulse off the target
sig = step(htgt,sig);
% Propagate the echo to the antenna in free space
sig = step(hspace,sig,tgtpos,txpos,tgtvel,[0;0;0]);
% Collect the echo from the incident angle at the antenna
sig = step(hcol,sig,tgtang);
% Receive the echo at the antenna when not transmitting
rxsig(:,n) = step(hrec,sig,~txstatus);
end
rxsig = pulsint(rxsig,'noncoherent');
t = unigrid(0,1/hrec.SampleRate,T,'[)');
rangegates = (physconst('LightSpeed')*t)/2;
plot(rangegates,rxsig); hold on;
xlabel('Meters'); ylabel('Power');
ylim = get(gca,'YLim');
plot([tgtrng,tgtrng],[0 ylim(2)],'r');

Accepted Answer

Honglei Chen
Honglei Chen on 19 Mar 2013
Hi Mehmet,
When you turn on Swerling mode in a radar target, you need to manage when to update the RCS in your simulation by passing in an additional logical flag to the step() call. If you pass in TRUE, then RCS will be updated, otherwise, the old RCS is used.
For example, let's say you have a Swerling II model and your are simulating one pulse a time, then in your loop, it will look like
for pulseIndex = 1:N
%...
step(myTarget,x,true)
%...
end
where N is the number of pulses you simulated and x is the signal.
On the other hand, if you have a Swerling I model which changes from dwell to dwell and assume each dwell is 10 pulses, then you will have something like
for pulseIndex = 1:N
%...
if rem(pulseIndex-1,10)
step(myTarget,x,false);
else
step(myTarget,x,true);
end
%...
end
If you need a system level example, you can take a look at the following shipping example which uses a Swerling II target
HTH
  1 Comment
Mehmet
Mehmet on 19 Mar 2013
Hi Honglei,
First of all thank you for your answer. I just realized I needed a logical input when I entered a matris value to try what will happen. About the same time I have seen your answer and applied it. It worked perfectly.
Thank you very much again, Best regards.
Mehmet

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!