📄 dbtex26.m
字号:
function dbtex26%DBTEX26 An example of simultaneous beamforming ad doppler filtering of radar signals.%%Description:% The filtering is performed with the function "spapulfilt". % Both Capon and MUSIC methods are used. The needed correlation matrix% is estimated from from several CPIs, which are obtained by splitting% the number of pulses in a fewer number of pulses and several CPIs. As% comparison, separate conventional nonadaptive beamforming and doppler% filtering are calculated and displayed.% Two targets at the same range and with DOAs and Doppler frequencies% close to each other is simulated. A Barker 13 waveform is used and% pulse compression is performed before any processing in DOA or Doppler.%%See Also:% dbtex21, dbtex25%% * DBT, A Matlab Toolbox for Radar Signal Processing *% (c) FOA 1994-2000. See the file dbtright.m for copyright notice.% Start : 991101 Svante Bj鰎klund (svabj).% Latest change: $Date: 2000/10/16 15:39:48 $ $Author: svabj $.% $Revision: 1.4 $%*****************************************************************************% Script for simradarsig.!%clear all% ----------------------------------------------------------------------- %% Definition of the antenna.% ----------------------------------------------------------------------- %lambda = 0.03; % wavelength.D = 0.45*lambda; % Element separation.noChannels = 12; % Number of digital antenna channels.recAnt = defant('isotropULA',[noChannels,D]);% ----------------------------------------------------------------------- %% Definition of the waveform.% ----------------------------------------------------------------------- %pri = 1e-4;noPulses = 1024;noCPI = 1;sampleTime = 1e-6; % SubPulseLength [s]noRangeBins = round(pri / sampleTime);noRangeBins = 100;pModulation = getmod('barker','13'); % Barker-13 has sidelobes 1/13 of the main peak.%pModulation =[];waveform = defwave(lambda, noRangeBins, noPulses, pModulation, sampleTime);% ----------------------------------------------------------------------- %% Definition of the sources.% ----------------------------------------------------------------------- %%target = deftarget(trgType, trgPower, trgRange, trgDOA, trgVel);trg1 = deftarget('swerling0', 20, 1000, [d2r(25); 0], 20);trg2 = deftarget('swerling0', 15, 1000, [d2r(24); 0], 18);%trg3 = deftarget('swerling0', 12, 1000, [d2r(25); 0], 18);%trg4 = deftarget('swerling0', 3, 1000, [d2r(24); 0], 20); % Targets at ranges 19 and 53 range bins.%noiseSrc = defnoise(noiseType, noisePower);noiseSrc1 = defnoise('Gaussian', 0.3, eye(noChannels));%clutterdef = defclutter(clutterType, clutterTypeParam, clutterPower, clutterPatchDOAs, transAnt)clutterSrc1 = defclutter('MIT-LCE', {6000 4 50}, 10, d2r(-30):0.01:d2r(30));%srcDef = defsources(srcList, trgCorrMx)sources = defsources({trg1 trg2 noiseSrc1}, eye(2));%sources = defsources({trg1 trg2 trg3 trg4 noiseSrc1}, eye(4));%sources = defsources({trg1 trg3 noiseSrc1 clutterSrc1}, eye(2));% ----------------------------------------------------------------------- %% Simulation of radar signals.% ----------------------------------------------------------------------- %radarSig1 = simradarsig(recAnt, sources, waveform, pri);radarSig1 = sigsubix(radarSig1,':',1:25,':');figure,sigplot2(radarSig1,':',':',1)title('Radar signal before pulse compression.') % The amplitude will depend on the pulse number because the two targets will interfere with each other, sometimes constructively and simetimes destructively.% ----------------------------------------------------------------------- %% Signal processing and plotting.% ----------------------------------------------------------------------- %%---- Pulse compression ----radarSig1=pulscomp(radarSig1,pModulation);%ranAxis = (0:99)*150;%ranAxis = (1:80)*150;ranAxis = [];%---- Split signal into several CPIs ----figure,sigplot2(radarSig1,':',':',1)title('Radar signal after pulse compression.')radarSig2 = sigsubix(radarSig1,':',19,':');radarSig2 = sigsplitdim(radarSig2, 1, 8, 5);%---- Beamforming : Conv. beamf., without Doppler filt. ----%spaAxis = d2r(-10:0.5:40);spaAxis = [];sigFinal = beamform(radarSig1,spaAxis,[],[],[]);spaAxis = r2d(sigFinal.doaPos);%---- Plotting the signal ----figuresigplot2(sigFinal,1,':',':',{... 'ranAxis', ranAxis, ... 'spaAxis', spaAxis, ... 'scaleType', 'lin'});ylabel('Ranges [m]')xlabel('Direction [degrees]')title('Conventional beamforming')%shading('interp')%---- Doppler filtering : "dopplerfilt" , without beamforming ----dopScaleType = 'lin';noFreqsOut = noPulses;prf = 1/pri;pulAxis = genfreqaxis(0,prf,noFreqsOut).';sigFinal2 = dopplerfilt(radarSig1, pulAxis);spaAxis = r2d(sigFinal2.doaPos);plotPulAxis = sigFinal2.freqPos * lambda / 2; % Radial speed.;%---- Plotting the signal ----sigFinal2;figuresigplot2(sigFinal2,':',':',1,{... 'spaAxis', spaAxis, ... 'pulAxis', plotPulAxis, ... 'scaleType', dopScaleType}); %'ranAxis', ranAxis, ...%ylabel('Doppler Frequency [Hz]')ylabel('Radial speed [m/s]')%xlabel('Direction [degrees]')title('Doppler filtering with "dopplerfilt"')%shading('interp')%---- Beamforming and Doppler filtering : Conv. filt. ----if (0)%pulAxis = genfreqaxis(0,prf,noFreqsOut).';sigFinal2 = spapulfilt(radarSig1, { 'method', 'cbf',... 'model', {radarSig1.antenna, radarSig1.waveform},... 'sampleDim', 5});spaAxis = r2d(sigFinal2.doaPos);%plotPulAxis = sigFinal2.freqPos;plotPulAxis = sigFinal2.freqPos * lambda / 2; % Radial speed.%---- Plotting the signal ----figuresigplot2(sigFinal2,':',19,':',{... 'spaAxis', spaAxis, ... 'pulAxis', plotPulAxis, ... 'scaleType', dopScaleType}); %'ranAxis', ranAxis, ...%ylabel('Doppler Frequency [Hz]')ylabel('Radial speed [m/s]')%xlabel('Direction [degrees]')title('Conv. space-pulse filtering, without beamforming')%shading('interp')end%if (0)%---- Beamforming and Doppler filtering : Capon. ----spaAxisIn = d2r(23.5:0.05:25.5);pulAxisIn = (17.5:0.1:20.5)*2/lambda;sigFinal2 = spapulfilt(radarSig2, { 'method', 'capon',... 'model', {radarSig2.antenna, radarSig2.waveform},... 'doaFreqChoice', {spaAxisIn, pulAxisIn},... 'sampleDim', 5});spaAxis = r2d(sigFinal2.doaPos);%plotPulAxis = sigFinal2.freqPos;plotPulAxis = sigFinal2.freqPos * lambda / 2; % Radial speed.%---- Plotting the signal ----figuresigplot2(sigFinal2,':',1,':',{... 'spaAxis', spaAxis, ... 'pulAxis', plotPulAxis, ... 'scaleType', dopScaleType}); %'ranAxis', ranAxis, ...%ylabel('Doppler Frequency [Hz]')ylabel('Radial speed [m/s]')xlabel('Direction [degrees]')title('Capon space-pulse filtering, without beamforming')%shading('interp')%---- Beamforming and Doppler filtering : MUSIC. ----spaAxisIn = d2r(23.5:0.05:25.5);pulAxisIn = (17.5:0.1:20.5)*2/lambda;sigFinal2 = spapulfilt(radarSig2, { 'method', 'music',... 'model', {radarSig2.antenna, radarSig2.waveform},... 'doaFreqChoice', {spaAxisIn, pulAxisIn},... 'sampleDim', 5});spaAxis = r2d(sigFinal2.doaPos);%plotPulAxis = sigFinal2.freqPos;plotPulAxis = sigFinal2.freqPos * lambda / 2; % Radial speed.%---- Plotting the signal ----figuresigplot2(sigFinal2,':',1,':',{... 'spaAxis', spaAxis, ... 'pulAxis', plotPulAxis, ... 'scaleType', dopScaleType}); %'ranAxis', ranAxis, ...%ylabel('Doppler Frequency [Hz]')ylabel('Radial speed [m/s]')xlabel('Direction [degrees]')title('MUSIC space-pulse estimation, without beamforming')%shading('interp')%End Of File
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -