📄 dbtex25.m
字号:
function dbtex25%DBTEX25 An example of doppler filtering of radar signals using the function "pulfilt".% Several methods for the filtering including Capon and MUSIC are used.%% * DBT, A Matlab Toolbox for Radar Signal Processing *% (c) FOA 1994-2000. See the file dbtright.m for copyright notice.% Start : 991012 Svante Bj鰎klund (svabj).% Latest change: $Date: 2000/10/16 15:39:47 $ $Author: svabj $.% $Revision: 1.4 $%*****************************************************************************% ----------------------------------------------------------------------- %% 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-3;pri = 1e-4;noPulses = 32;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', 10^1.2, 6000, [d2r(25); 0], 20);trg2 = deftarget('swerling0', 10^0.6, 1000, [d2r(18); 0], -30);trg3 = deftarget('swerling0', 10^0.8, 6000, [d2r(-3); 0], 5);%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 trg3}, eye(3));sources = defsources({trg1 trg2 trg3 noiseSrc1}, eye(3));%sources = defsources({trg2 noiseSrc1}, eye(1));%sources = defsources({trg1 trg2 trg3 noiseSrc1 clutterSrc1}, eye(3));% ----------------------------------------------------------------------- %% Simulation of radar signals.% ----------------------------------------------------------------------- %radarSig = simradarsig(recAnt, sources, waveform, pri);radarSig = sigsplitdim(radarSig, 1, 4, 5);% ----------------------------------------------------------------------- %% Signal processing and plotting.% ----------------------------------------------------------------------- %%---- Pulse compression ----radarSig=pulscomp(radarSig,pModulation);%ranAxis = (0:99)*150;ranAxis = (1:80)*150;%---- Beamforming : Conventional beamforming ----spaAxis = d2r(-90:5:90);%spaAxis = [];sigFinal = beamform(radarSig,spaAxis,[],'taylor',50);spaAxis = r2d(sigFinal.doaPos);%---- Plotting the signal ----sigFinal;figure%13:25sigplot2(sigFinal,1,50:60,':',{... 'spaAxis', spaAxis, ... 'scaleType', 'lin'}); %'ranAxis', ranAxis, ...%ylabel('Ranges [m]')xlabel('Direction [degrees]')title('Conventional beamforming, 50 dB Taylor')%shading('interp')dopScaleType = 'lin';noFreqsOut = 32;prf = 1/pri;%---- Doppler filtering : Conventional filtering ----pulAxis = genfreqaxis(0,prf,noFreqsOut).';sigFinal = pulfilt(sigFinal, 'cbf', {radarSig.antenna, radarSig.waveform},... [], pulAxis);spaAxis = r2d(sigFinal.doaPos);%plotPulAxis = sigFinal.freqPos;plotPulAxis = sigFinal.freqPos * lambda / 2; % Radial speed.%---- Plotting the signal ----figure% Targets at ranges 19, 53 range bins.sigplot2(sigFinal,':',53,':',{... 'spaAxis', spaAxis, ... 'pulAxis', plotPulAxis, ... 'scaleType', dopScaleType}); %'ranAxis', ranAxis, ...%ylabel('Doppler Frequency [Hz]')ylabel('Radial speed [m/s]')xlabel('Direction [degrees]')title('Conventional Doppler filtering, with beamforming')%shading('interp')%---- Doppler filtering : Conventional filtering , without beamforming ----pulAxis = genfreqaxis(0,prf,noFreqsOut).';sigFinal2 = pulfilt(radarSig, 'cbf', {radarSig.antenna, radarSig.waveform},... [], pulAxis);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('Conventional Doppler filtering, without beamforming')%shading('interp')%---- Doppler filtering : FFT , without beamforming ----pulAxis = genfreqaxis(0,prf,noFreqsOut).';sigFinal2 = pulfilt(radarSig, 'fft', {radarSig.antenna, radarSig.waveform},... [], [],[],[],[],96);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('FFT Doppler filtering')%shading('interp')%-- Doppler filtering : Capon , without beamforming , data from spat. dim. --%noFreqsOutHigh = 256;%pulAxis = genfreqaxis(0,prf,noFreqsOutHigh).';pulAxis = [(-prf/2):200:-2020, -2020:2.5:-1980, -1980:100:300, 300:2.5:400, 400:100:1300, 1300:2.5:1400, 1400:200:(prf/2)];sigFinal2 = pulfilt(radarSig, { 'method', 'capon',... 'model', {radarSig.antenna, radarSig.waveform},... 'freqChoice' pulAxis,... 'sampleDim', 3});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 Doppler filtering, without beamf., spa data')%shading('interp')%-- Doppler filtering : Capon , without beamforming , data from cpi. dim. --%pulAxis = genfreqaxis(0,prf,noFreqsOutHigh).';sigFinal2 = pulfilt(radarSig, { 'method', 'capon',... 'model', {radarSig.antenna, radarSig.waveform},... 'freqChoice' pulAxis,... '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 Doppler filtering, without beamf., cpi data')%shading('interp')%---- Doppler filtering : MUSIC , without beamforming ----%pulAxis = genfreqaxis(0,prf,noFreqsOut).';sigFinal2 = pulfilt(radarSig, 'music', {radarSig.antenna, radarSig.waveform},... [], pulAxis);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 Doppler filtering, without beamforming')%shading('interp')%---- Doppler filtering : "dopplerfilt" , without beamforming ----pulAxis = genfreqaxis(0,prf,noFreqsOut).';sigFinal2 = dopplerfilt(radarSig, 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')%-- Doppler filtering : 'dataeigvec' , without beamforming , data from spat. dim. --%noFreqsOutHigh = 256;%pulAxis = genfreqaxis(0,prf,noFreqsOutHigh).';%pulAxis = [(-prf/2):200:-2020, -2020:2.5:-1980, -1980:100:300, 300:2.5:400, 400:100:1300, 1300:2.5:1400, 1400:200:(prf/2)];sigFinal2 = pulfilt(radarSig, { 'method', 'dataeigvec',... 'model', {radarSig.antenna, radarSig.waveform},... 'sampleDim', 3});spaAxis = r2d(sigFinal2.doaPos);%plotPulAxis = sigFinal2.freqPos;%plotPulAxis = sigFinal2.freqPos * lambda / 2; % Radial speed.%---- Plotting the signal ----figuresigplot2(sigFinal2,':',':',1,{... 'spaAxis', spaAxis, ... 'scaleType', dopScaleType}); %'ranAxis', ranAxis, ...ylabel('Doppler Frequency [Hz]')%ylabel('Radial speed [m/s]')%xlabel('Direction [degrees]')title('Data Eigenvector Doppler filtering, without beamf., spa data')%shading('interp')%---- Doppler filtering : dfb2 , without beamforming ----PRI = radarSig.waveform.noRangeBins * radarSig.waveform.sampleTime;PRF = 1/PRI;[sigFinal2, vd] = dfb2(radarSig,PRF,noFreqsOut);spaAxis = r2d(sigFinal2.doaPos);%plotPulAxis = sigFinal2.freqPos;plotPulAxis = vd;%---- 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 dfb2')%shading('interp')%End Of File
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -