step() for constant gamma clutter

1 view (last 30 days)
Chris Jagielski
Chris Jagielski on 2 Oct 2015
Commented: Chris Jagielski on 13 Oct 2015
Hello,
I am running some code with the constant gamma clutter step() function. My waveform is changed to "sample" output, not the default "pulse" output.
When I run the step function twice in a row, the first time I get my correct MxN matrix (M number of samples, N number of antenna elements in my array). However, the second sequential step() gives an incorrectly sized matrix.
The third time in a row, it's correct MxN again, and so on.
How can I try to troubleshoot this?
Thank you for any ideas!
  3 Comments
Chris Jagielski
Chris Jagielski on 5 Oct 2015
Yes: it's lengthy but here it is.
if true
% test code
%
% this shows that calling step twice on the clutter model creates an issue
% where the size of the output matrices are different each time
%
% 5 October 2015
%
%
% ver
% ----------------------------------------------------------------------------------------------------
% MATLAB Version: 8.3.0.532 (R2014a)
% MATLAB License Number: ••••••
% Operating System: Linux 3.5.0-37-generic #58~precise1-Ubuntu SMP Wed Jul 10 17:48:11 UTC 2013 x86_64
% Java Version: Java 1.7.0_11-b21 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
% ----------------------------------------------------------------------------------------------------
% MATLAB Version 8.3 (R2014a)
% Communications System Toolbox Version 5.6 (R2014a)
% Curve Fitting Toolbox Version 3.4.1 (R2014a)
% DSP System Toolbox Version 8.6 (R2014a)
% Fixed-Point Designer Version 4.2 (R2014a)
% Instrument Control Toolbox Version 3.5 (R2014a)
% Mapping Toolbox Version 4.0.1 (R2014a)
% Parallel Computing Toolbox Version 6.4 (R2014a)
% Phased Array System Toolbox Version 2.2 (R2014a)
% Signal Processing Toolbox Version 6.21 (R2014a)
% Statistics Toolbox Version 9.0 (R2014a)
%
clear all
c = physconst('LightSpeed');
fc = 10e9;
numSamples = 100;
targetVel = [10 10 10];
targetPos = [3700 10 700];
max_unambiguous_range = 15000; %[m] this affects the PRF
range_resolution_required = 50; %[m] this affects the pulse BW
tx_gain = 20; %[dB]
platformheight = 500; %[m]
txPos = [0; 0; platformheight];
txVel = [0; 0; 0];
platformDirection = [0;0];
pulse_bw = c/(2*range_resolution_required); % Pulse bandwidth [Hz]
pulse_width = 10/pulse_bw; % Pulse width [seconds]
prf = c/(2*max_unambiguous_range); % Pulse repetition frequency
fs = 10*pulse_bw; % Sampling rate [Hz]
myFreqValues = [0 1e20];
myFreqResponses = [0 0];
Az = -180:1:180;
El = -90:1:90;
AzEl_RadPattern = ones(length(El),length(Az));
h_antenna = phased.CustomAntennaElement(...
'AzimuthAngles',Az,...
'ElevationAngles',El,...
'RadiationPattern',AzEl_RadPattern,...
'FrequencyVector',myFreqValues,...
'FrequencyResponse',myFreqResponses);
trgamma = surfacegamma('flatland');
rx_speed = sqrt((txVel(1))^2 + (txVel(2))^2 + (txVel(3))^2);
h_clutter = phased.ConstantGammaClutter(...
'Sensor',h_antenna,...
'PropagationSpeed',c,...
'OperatingFrequency',fc,...
'SampleRate',fs,...
'TransmitSignalInputPort',true,...
'PRF',prf,...
'Gamma',trgamma,...
'PlatformHeight',platformheight,...
'PlatformSpeed',rx_speed,...
'PlatformDirection',platformDirection,...
'BroadsideDepressionAngle',0,...
'MaximumRange',max_unambiguous_range,...
'AzimuthCoverage',360,...
'PatchAzimuthWidth',10,...
'SeedSource','Property',...
'Seed',2015,...
'OutputFormat','Samples',...
'NumSamples',numSamples);
h_wave = phased.LinearFMWaveform(...
'PulseWidth',pulse_width,...
'PRF',prf,...
'SweepBandwidth',pulse_bw,...
'SampleRate',fs,...
'OutputFormat','Samples',...
'NumSamples',numSamples);
h_tx = phased.Transmitter(...
'Gain', tx_gain, ...
'LossFactor', 0, ...
'PeakPower', 500, ...
'InUseOutputPort', true, ...
'CoherentOnTransmit', false, ...
'PhaseNoiseOutputPort', true );
% -------------------------------------------------------
% Generate pulse
x = step(h_wave);
% Transmit pulse
release(h_tx);
[s, tx_status, pnoise] = step(h_tx,x);
% Y = step(H,X) specifies the transmit signal in X. Transmit signal refers
% to the output of the transmitter while it is on during a given pulse.
% This syntax is available when you set the TransmitSignalInputPort
% property to true.
csig1 = step(h_clutter,s(abs(s)>0));
csig2 = step(h_clutter,s(abs(s)>0));
csig3 = step(h_clutter,s(abs(s)>0));
csig4 = step(h_clutter,s(abs(s)>0));
size(csig1)
size(csig2)
size(csig3)
size(csig4)
% Note that the size changes!
end
Chris Jagielski
Chris Jagielski on 13 Oct 2015
Is anyone able to duplicate this? Perhaps I am using it wrong, any guidance would be very helpful.

Sign in to comment.

Answers (0)

Community Treasure Hunt

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

Start Hunting!