⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tdbt.m

📁 阵列信号处理的工具箱
💻 M
📖 第 1 页 / 共 5 页
字号:
% Comments% Test 2 of a Chirp (linear FM) code.disp('Test 101i')  clear all  len = 1024;		% Number of samples.  maxFDev = 500;	% Maximum frequency deviation [Hz].  fSamp = 2000;		% Sampling frequency [Hz].  Ts = 1/fSamp;		% Sampling time [s].  t = linspace(0, Ts*len, len);  codeCalc = getmod('chirp',[maxFDev,fSamp,len]);  realSig = real(codeCalc);  figure,plot(t,realSig)  title('Time signal')  xlabel('Time [s]')  %freqEst = 1/(2*pi) * diff(unwrap(angle(codeCalc))) * fSamp;	% [Hz]  freqEst = estlocalfreq(codeCalc, fSamp);  figure, plot(t,[0;freqEst])  title('Frequency estimation')  xlabel('Time [s]')  ylabel('Frequency [Hz]')  spect = fftshift(fft(realSig));  f = linspace(-fSamp/2,fSamp/2,len);  figure,plot(f,(spect))  title('Frequency spectrum')  xlabel('Frequency [Hz]')% Expected result :% The frequency of the time signal shall increase.% The estimation of frequency shall be a straight line with upward% direction an through origo (from 0 Hz to 500 Hz).% The frequency spectrum shall reside mainly within +- 500 Hz.% Real result :% [ ]disp('Test 101aa')% Expected result :% Real result :elseif (testnr==102)% *****************************************************************************% [ ]  : Test 102% Sign:   Datum:%% Test of exchange of calls to getm, getm2, getm3 and setm with direct% indexing in Matlab 5.%% *****************************************************************************% Comments% [ ]disp('Test 102a')% Comments%   Comparision of setm and Matlab 5 direct indexing.  clear A B  A(:,:,1) = [1 2 3; 4 5 6];  A(:,:,2) = [7 8 9; 10 11 12];  B = A;  A(1,':',2) = [20 21 22];  B = setm(B, [20 21 22], 1,':',2);  %limit = 0.5*prod(size(A))*eps;  if (~all(all(all((A == B),1),2),3))    error('DBT-Error: Difference to large.')  else    disp('  Test Ok.')  end%if% Expected result :%   No error message.% Real result :% [ ]disp('Test 102b')% Comments%   Comparision of setm and Matlab 5 direct indexing.  % [3 2 2 4]  clear A B  A(:,:,1,4) = [1 2; 4 5; 7 8];  A(:,:,2,4) = [10 11; 13 14; 16 17];  B = A;  A(2,':',':',4) = [20 21; 23 24];  B = setm(B, [20 21; 23 24], 2,':',':',4);  if (~all(all(all(all((A == B),1),2),3),4))    error('DBT-Error: Difference to large.')  else    disp('  Test Ok.')  end%if% Expected result :%   No error message.% Real result :if (0)% [ ]disp('Test 102c')% Comments%   Comparision of setm and Matlab 5 direct indexing.  if (~all(all(all(all((A == B),1),2),3),4))    error('DBT-Error: Difference to large.')  else    disp('  Test Ok.')  end%if% Expected result :%   No error message.% Real result :end%if (0)elseif (testnr==103)% *****************************************************************************% [ ]  : Test 103% Sign:   Datum:%% Test of function "sigsplitdim".%% *****************************************************************************% Comments% [ ]disp('Test 103a')% Comments%   Test of function "sigsplitdim"  clear s s2  s = RxRadarSigT;  s.signals = ones([4 6 8 1 1]);  s2 = sigsplitdim(s,1,2,4);  size(s2.signals)% Expected result :%   2 6 8 2%   No error message.% Real result :% [ ]disp('Test 103b')% Comments%   Test of function "sigsplitdim"  clear s s2  s = RxRadarSigT;  s.signals = ones([4 6 8 1 1 1]);  s2 = sigsplitdim(s,3,4,5);  size(s2.signals)% Expected result :%   4 6 4  1 2%   No error message.% Real result :% [ ]disp('Test 103c')% Comments%   Test of function "sigsplitdim"  clear s s2  s = RxRadarSigT;  s.signals = ones([4 6 8 1 1 1]);  s2 = sigsplitdim(s,2,2,6);  size(s2.signals)% Expected result :%   4 2 8 1 1 3%   No error message.% Real result :elseif (testnr==120)% *****************************************************************************% [ ]  : Test 120% Sign:   Datum:%% Test of wide band signal simulation.%% *****************************************************************************% Comments% [ ]% Comments% Test of wide band signal simulation.  disp('Test 120a')  clear all  propSpeed = speedoflight;		% [m/s].  carrierFreq = 3e9		        % [Hz].  lambda = propSpeed / carrierFreq;     % Wavelength [m].  distElem 	= 0.45*lambda;		% Element separation.  noChan 	= 12;			% Number of digital antenna channels.  antenna = defant('isotropULA',[noChan,distElem]);	% Define the antenna.  bandwidth = carrierFreq*0.9		% [Hz].  noTimes = 16;				% Number of time samples.  noTrials = 1;  noSrc = 1;  srcSignals = [ones(1,noTimes/2), 2*ones(1,(noTimes/2))];  srcSignals(1) = srcSignals(1) + j*eps;  srcDoas = d2r([67]);		% Target angles [radians]. The number of				%   targets is				%   given by the number of target angles.  srcPowers = ones(noSrc,1);  srcCorr = [];  orthSig = [];  %[sigOut, sourceSigTime, noiseSigTime] = simwideband(srcType, antenna,  %  carrierFreq, bandwidth, noTimes, noTrials, srcSignals, srcDoas,  %  srcPowers, srcCorr, orthSig, propSpeed)  sig = simwideband('det',antenna,carrierFreq, bandwidth, noTimes, ...    noTrials, srcSignals, srcDoas, srcPowers, {srcCorr}, orthSig, propSpeed);  figure, sigplot2(sig,':',1,':',...     {'pulAxis', sig.waveform.sampleTime*(sig.pulIx-1)/1e-12})  ylabel('Time [ps]')  irot  %printfm simwide1a.ps 10 8% Expected result :%   Time delay from antenna element m to m+n is equal to%     tau = (n*0.45/carrierFreq)*sin(srcDoas)%   For srcDoas = 40 degress, tau = n*9.642e10-11 s.  disp(['Expected delays = ' num2str(((1:(noChan-1))*0.45/carrierFreq)*sin(srcDoas)/1e-12) 'ps'])% Real result :% [ ]% Comments% Test of wide band signal simulation.disp('Test 120b')% Expected result :% Real result :% [ ]% Comments% Test of wide band signal simulation.disp('Test 120c')% Expected result :% Real result :if (0)% [ ]% Comments% Test of a Chirp (linear FM) code.disp('Test 120h')  clear all  len = 29;  maxFDev = 1e6;  fSamp = 3.225e6;  codeCalc = getmod('chirp',[maxFDev,fSamp,len]);  param = maxFDev * fSamp / len;  codeExpect = exp(i*pi*param*([1:len]*(1/fSamp)).^2).';  extraRelTol = 7 *2; % Allow for some extra tolerance because of many    % floating point operations (7) and use of complex numbers (2).  limit = extraRelTol* 0.5*size(codeCalc,1)*size(codeExpect,2)*eps;  difference = sum(sum(abs(codeCalc-codeExpect)));  if (difference > limit)    error('DBT-Error: Difference to large.')  else    disp('  Test Ok.')  end%if% Expected result :% No error message.% Real result :end%if (0)elseif (testnr==130)% *****************************************************************************% [ ]  : Test 130% Sign:   Datum:%% Test of range steering matrix calculation.%% *****************************************************************************% Comments% [ ]disp('Test 130a')  lambda = 0.1;		% [m]  noRangeBins = 8;  noPulses = 2;  pModulation = [4 3 2].';  sampleTime = 1e-6;	% [s]  waveform = defwave(lambda, noRangeBins, noPulses, pModulation, sampleTime);  %rangeBinLen = (speedoflight * sampleTime)/2;	% = 149.8962 [m]  rangeBinLen = getranbinlen(waveform,speedoflight);	% = 149.8962 [m]    % Max unambiguous range is 8 * 149.8962 = 1199.2 m.  ranges = 400;		% [m]. Should land up in range bin 3.  A = ranstemat(waveform, ranges);% Expected result :  B = [0 0 4 3 2 0 0 0].';% Real result :  limit = 0.5*size(A,1)*size(A,2)*eps;  difference = sum(sum(abs(A-B)));  if (difference > limit)    error('Difference to large.')  else    disp('  Test Ok.')  end%if% [ ]disp('Test 130b')% Several ranges in the same call. First range bin. Last range bin. Exactly in middle of range bin, Exactly at range bin border.  lambda = 0.1;		% [m]  noRangeBins = 8;  noPulses = 2;  pModulation = [4 3 2].';  sampleTime = 1e-6;	% [s]  waveform = defwave(lambda, noRangeBins, noPulses, pModulation, sampleTime);  %rangeBinLen = (speedoflight * sampleTime)/2;	% = 149.8962 [m]  rangeBinLen = getranbinlen(waveform,speedoflight);	% = 149.8962 [m]    % Max unambiguous range is 8 * 149.8962 = 1199.2 m.  ranges = [0, 74, 75.1, 150, 290, 323, 890, 1199, 1200, 1050, 1040, 1215];    % [m]. Start range bins are: 1 1 1 2 2 3 6 8 9 8 7 9.  A = ranstemat(waveform, ranges);% Expected result :  B = [4 3 2 0 0 0 0 0 ; 4 3 2 0 0 0 0 0 ; 4 3 2 0 0 0 0 0; 0 4 3 2 0 0 0 0;...       0 4 3 2 0 0 0 0 ; 0 0 4 3 2 0 0 0 ; ...       0 0 0 0 0 4 3 2 ; ...       3 2 0 0 0 0 0 4 ; 4 3 2 0 0 0 0 0 ; 3 2 0 0 0 0 0 4 ; 2 0 0 0 0 0 4 3;...       4 3 2 0 0 0 0 0 ].';% Real result :  limit = 0.5*size(A,1)*size(A,2)*eps;  difference = sum(sum(abs(A-A)));  if (difference > limit)    error('Difference to large.')  else    disp('  Test Ok.')  end%ifelseif (testnr==131)% *****************************************************************************% [ ]  : Test 131% Sign:   Datum:%% Test of space-range steering matrix calculation.%% *****************************************************************************% Comments% [ ]disp('Test 131a')% Space parameters  lambda = 0.1;		% [m]  noElem = 2;  distElem = 0.5*lambda;  antenna = defant('isotropULA',[noElem, distElem]);  doas = d2r(55);% Range parameters  noRangeBins = 6;  noPulses = 2;  pModulation = [4 3 2].';  sampleTime = 1e-6;	% [s]  waveform = defwave(lambda, noRangeBins, noPulses, pModulation, sampleTime);  %rangeBinLen = (speedoflight * sampleTime)/2;	% = 149.8962 [m]  rangeBinLen = getranbinlen(waveform,speedoflight);	% = 149.8962 [m]    % Max unambiguous range is 8 * 149.8962 = 1199.2 m.  ranges = 400;		% [m]. Should land up in range bin 3.% Steering matrix calculation  A = sparanstemat({antenna, waveform}, {doas,ranges}, {lambda});  A.'% Expected result :  AExp = [1; -0.84289752545115 + 0.53807412276408i];  B = [[0 0 ], [0 0 ], 4* AExp.', 3* AExp.', 2* AExp.', [0 0 ]].';  B.'% Real result :  limit = 0.5*size(A,1)*size(A,2)*eps  difference = sum(sum(abs(A-B)))  if (difference > limit)    %error('Difference to large.')    dbtwarning('Difference to large.')  else    disp('  Test Ok.')  end%if% [ ]disp('Test 131b')% Space parameters  lambda = 0.1;		% [m]  noElem = 2;  distElem = 0.5*lambda;  antenna = defant('isotropULA',[noElem, distElem]);  doas = d2r([55, -127, 193]);% Range parameters  noRangeBins = 6;  noPulses = 2;  pModulation = [4 3 2].';  sampleTime = 1e-6;	% [s]  waveform = defwave(lambda, noRangeBins, noPulses, pModulation, sampleTime);  %rangeBinLen = (speedoflight * sampleTime)/2;	% = 149.8962 [m]  rangeBinLen = getranbinlen(waveform,speedoflight);	% = 149.8962 [m]    % Max unambiguous range is 8 * 149.8962 = 1199.2 m.  ranges = [400, 74];	% [m]. Should land up in range bin 1 and 3.% Steering matrix calculation  A = sparanstemat({antenna, waveform}, {doas,ranges}, {lambda});  A = (abs(A) > 0);% Expected result :  % A (6*2, 2*3) = (12,6) matrix with block of size (2,3) and elements 0 and 1.   B =[	0	0	0	1	1	1 ;	0	0	0	1	1	1 ;	0	0	0	1	1	1 ;	0	0	0	1	1	1 ;	1	1	1	1	1	1 ;	1	1	1	1	1	1 ;	1	1	1	0	0	0 ;	1	1	1	0	0	0 ;	1	1	1	0	0	0 ;	1	1	1	0	0	0 ;	0	0	0	0	0	0 ;	0	0	0	0	0	0 ];	% Real result :  limit = 0.5*size(A,1)*size(A,2)*eps;  difference = sum(sum(abs(A-B)));  if (difference > limit)    error('Difference to large.')  else    disp('  Test Ok.')  end%ifelseif (testnr==999)% *****************************************************************************% [ ]  : Test 999% Sign:   Datum:%% Template for tests.%% *****************************************************************************% Comments% [ ]disp('Test 999a')% Expected result :% Real result :% [ ]disp('Test 999b')% Expected result :% Real result :else  disp('Incorrect testnumber.');end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -