Azzera filtri
Azzera filtri

Subarray Simulation have different output by using similar method

1 visualizzazione (ultimi 30 giorni)
Hi there
Currently, we want simulation a radar platform with 2 recv channels and 1 trx channel. Each channel is hooked with a subarray. Each subarray is a 6 by 3 array with the isotropic antenna. The following is the code for building this radar platform. As the code shown, we are using two methods to build the receiving array: "ula_r" and "ula_r2". From the attached figure, we can see that the power level of two received signal, rxsig and rxsig2, are different.
So my question is, which array I may use to simulate, "ula_r" or "ula_r2"?
I am using MATLAB 2017a
Thanks Xining Yu
clear
close all
fc = 24e9;
fs = 150e6;
c = physconst('LightSpeed');
lambda = c/fc;
spacing = lambda*6.4;
IsoTro = phased.IsotropicAntennaElement('FrequencyRange',[10e9,50e9],...
'BackBaffled',true);
%construct subarray
subarray = phased.URA('Element',IsoTro,'Size',[3 6],'ElementSpacing',[lambda/2, lambda/2]);
[embpattern, az, el] = pattern(subarray,fc);
ant_sub = phased.CustomAntennaElement('FrequencyVector',[10e9,50e9],...
'AzimuthAngles',az,...
'ElevationAngles',el,...
'MagnitudePattern',embpattern,...
'PhasePattern',zeros(size(embpattern)));
% waveform
waveform = phased.FMCWWaveform('SweepTime',1e-3,'SweepBandwidth',150e6,...
'SampleRate',fs);
%%one transmitter
tx_ppower = db2pow(6.2)*1e-3; % convert 6.2dBm in watts
transmitter = phased.Transmitter('PeakPower',tx_ppower,'Gain',0);
radiator = phased.Radiator('Sensor',ant_sub,'OperatingFrequency',fc);
%%two receivers
N=2;
ula_r = phased.ReplicatedSubarray('Subarray',subarray,'GridSize',[1 N],'GridSpacing' ,[spacing,spacing]);
% Another way to construct receiving array
ula_r2 = phased.ULA('Element',ant_sub,'NumElements',N,'ElementSpacing',spacing);
rx_gain = 12; % in dB
rx_nf = 10; % in dB
receiver = phased.ReceiverPreamp('Gain',rx_gain,'NoiseFigure',rx_nf, 'SampleRate',fs);
collector = phased.Collector('Sensor',ula_r,'OperatingFrequency',fc);
collector2 = phased.Collector('Sensor',ula_r2,'OperatingFrequency',fc);
% Transmit FMCW waveform
sig = waveform();
txsig = transmitter(sig);
txsig = radiator(txsig,0);
% the received radar return
rxsig = collector(txsig,0);
rxsig = receiver(rxsig);
rxsig2 = collector2(txsig,0);
rxsig2 = receiver(rxsig2);
figure(1)
plot(abs(rxsig(:,1)))
title('rxsig')
figure(2)
plot(abs(rxsig2(:,1)))
title('rxsig2')

Risposta accettata

Honglei Chen
Honglei Chen il 15 Mar 2017
Conceptually the two approach is equivalent. The discrepancy you see is related to how you generate the custom antenna in your second approach. When you use the result from pattern, you essentially get only the magnitude data. However, even though the elements are isotropic, the response of an array has phase information in there. Therefore, instead of using
[embpattern, az, el] = pattern(subarray,fc);
ant_sub = phased.CustomAntennaElement('FrequencyVector',[10e9,50e9],...
'AzimuthAngles',az,...
'ElevationAngles',el,...
'MagnitudePattern',embpattern,...
'PhasePattern',zeros(size(embpattern)));
I would use the following code to generate the custom antenna element
az = -180:180;
el = -90:90;
embpattern = complex(zeros(numel(el),numel(az)));
subarrayresp = phased.ArrayResponse('SensorArray',subarray);
for m = 1:numel(el)
embpattern(m,:) = subarrayresp(fc,[az;el(m)*ones(size(az))]);
end
ant_sub = phased.CustomAntennaElement('FrequencyVector',[10e9,50e9],...
'AzimuthAngles',az,...
'ElevationAngles',el,...
'MagnitudePattern',mag2db(abs(embpattern)),...
'PhasePattern',angle(embpattern));
If you use this ant_sub in your program, you will see that the two approach give the same power level.
HTH
  2 Commenti
Xining Yu
Xining Yu il 15 Mar 2017
Modificato: Xining Yu il 15 Mar 2017
Thanks for your replying. Your suggestion has solved my problem. I have an additional question. For the transmitter, should I use the new method that you proposed, or my original method? I am really appreciated it. Have a nice day.
Regards Xining
Honglei Chen
Honglei Chen il 15 Mar 2017
I think either way is fine. If you use the custom antenna element approach, the resolution is determined by your original sampling grid. But for your case, it's probably not a big deal.
HTH

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by