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

📄 tdbt.m

📁 阵列信号处理的工具箱
💻 M
📖 第 1 页 / 共 5 页
字号:
sig3 = sigcomp2(sig,dbcfile,'Ccmp',[],'nocomp',0);R3 = ecorrm(sig3);setcal1('nocomp',[],'nearfldcomp')s3=sdoaspc('music',R3,doas,noPeaks);splot2(s3,'  c')r2d(doapeak(s3,'amir',noPeaks))sig4 = sigcomp2(sig,dbcfile,'nocomp',[],'nearfldcomp',0);R4 = ecorrm(sig4);setcal1('wctab',[],'nocomp')s4=sdoaspc('music',R4,doas,noPeaks);splot2(s4,'  r')r2d(doapeak(s4,'amir',noPeaks))legend('sig:nocomp,nocomp.', 'sig:Ccmp,nearfld.','sig:Ccmp,nocomp.','sig:nocomp,nearfld.')%save tdbt15 s1 s2 s3 s4difference = abs((sum(ls1.specSmpl-s1.specSmpl) + ...  sum(ls2.specSmpl-s2.specSmpl) + ...  sum(ls3.specSmpl-s3.specSmpl) + ...  sum(ls4.specSmpl-s4.specSmpl) ));%limit = eps;   % Ok on magic and curare.limit = 9.6e-9;	% Needed for hawk.if (difference  > limit)  error('DBT-Error: Difference to large.')else  disp('  Test OK.')end%if% Expected result :%  The four graphs shall "look good" with three peaks each at angles%  approx. -4, 0 and 1.5 degrees. The numerical values returned for%  the four cases should also be -4, 0 and 1.5 degrees.%  No error messages.% Real result :elseif (testnr==51)% *****************************************************************************% [ ]  : Test 51% Sign:     Datum:%% Test of the AIMT experimental antenna with different choices of% calibration compensation (wctab, Ccmp or wcmedel) on the STEERING VECTOR.% One spectral DOA estimation method is used.% The resulting DOA-spectra is checked to be the same as before.% They are not checked to be right. This test is useful to run after% changes in the code have been made.%% *****************************************************************************% Comments% [ ]disp('Test 51a')% Comments%   The most of the following code is currently (R1-6-3) the same as in%   dbtex9.m.  MMu = 3;        % Number of targets that MUSIC believes in.    % The true number is 3.  ant = defant('expAnt');  sig = expsig1(ant,'dbtex.dbs',1);  load tdbt51  ls1=s1;  ls2=s2;  ls3=s3;  R = ecorrm(sig);  setcal1('wctab','dbtex.dbc')  s1 = sdoaspc('music',R,d2r(-30:0.25:30),MMu);  setcal1('Ccmp')  s2 = sdoaspc('music',R,d2r(-30:0.25:30),MMu);  setcal1('wcmedel')  s3 = sdoaspc('music',R,d2r(-30:0.25:30),MMu);  hold on  splot2(s1,'  y')  splot2(s2, '  m')  splot2(s3,'  c')  legend('wctab','Ccmp','wcmedel')  difference = abs( sum(ls1.specSmpl-s1.specSmpl) + ...    sum(ls2.specSmpl-s2.specSmpl) + ...    sum(ls3.specSmpl-s3.specSmpl) )  %limit = eps;   % Ok on magic and curare.  limit = 7.0e-9;	% Needed for hawk.  %save tdbt51 s1 s2 s3  if ( difference  > limit)    error('DBT-Error: Difference to large.')  else    disp('  Test Ok.')  end%if% Expected result :%  No error message.% Real result :elseif (testnr==52)% *****************************************************************************% [ ]  : Test 52% Sign:     Datum:%% Test of the AIMT experimental antenna with different choices of% calibration compensation on the SIGNALS.% One spectral DOA estimation method is used.% The resulting DOA-spectra is checked to be the same as before.% They are not checked to be right. This test is useful to run after% changes in the code have been made.%% *****************************************************************************% Not implemented yet.elseif (testnr==60)% *****************************************************************************% [ ]  : Test 60% Sign:     Datum:%% Test of different antenna types and steering matrix calculations.%% The results are checked to be the same as before.% They are not checked to be right. This test is useful to run after% changes in the code have been made.%% *****************************************************************************% Comments% [ ]disp('Test 60a')% Comments%  'isotropULA'  lambda = 1.37;  distElem = lambda/2;  noElem = 37;  beamSpaceTrans = ones(noElem,1);  doas = d2r([-180 -156 -90 -67.45 -27.234 -1 0 1 pi 43.43 90 134 180]);% Isotrop ULA using recursive definition:  elem = defant('isotropElem');  ant1  = defant('ULA', [noElem, distElem], elem, beamSpaceTrans);% Isotrop ULA using special implementation:  ant2 = defant('isotropULA', [noElem, distElem]);  a1 = spastemat(ant1, doas, lambda);  a2 = spastemat(ant2, doas, lambda);  %max(max(abs(a1-a2)));% Expected result :  disp(['Expected value < '])  disp(eps)% Real result :  disp(['Real value = ' ])  disp(max(max(abs(a1-a2))))% [ ]disp('Test 60b')% Comments%	'isotropElem'  clear all  ant1 = defant('isotropElem');  doas = d2r([-180, -179, -135, -127, -90, -39, 0, ...    21, 22, 45, 78, 90, 167 ,180]);  lambda = 4.67;  focusDist = [];if (0)	% 1 = generate test data. 0 = Use test data.  A1b = spastemat(ant1,doas,lambda,focusDist);  save tdbt60 A1b -APPENDelse  load tdbt60  A1 = A1b;  A2 = spastemat(ant1,doas,lambda,focusDist);  extraRelTol = 2; % Allow for some extra tolerance because of many    % floating point operations and use of complex numbers (2).  limit = extraRelTol * 0.5*size(A1,1)*size(A1,2)*eps;  difference = sum(sum(abs(A1-A2)));  if (difference > limit)    error('Difference to large.')    %disp('Difference to large.')  else    disp('  Test Ok.')  end%ifend%if(0)% Expected result :%	No error message.% Real result :% [ ]disp('Test 60c')% Comments%	'pattFuncElem'  clear all  ant1 = defant('pattFuncElem', 'cos(x(1,:)).^2');  doas = d2r([-180, -179, -135, -127, -90, -39, 0, ...    21, 22, 45, 78, 90, 167 ,180]);  lambda = 4.67;  focusDist = [];if (0)	% 1 = generate test data. 0 = Use test data.  A1c = spastemat(ant1,doas,lambda,focusDist);  save tdbt60 A1c -APPENDelse  load tdbt60  A1 = A1c;  A2 = spastemat(ant1,doas,lambda,focusDist);  extraRelTol = 2; % Allow for some extra tolerance because of many    % floating point operations and use of complex numbers (2).  limit = extraRelTol * 0.5*size(A1,1)*size(A1,2)*eps;  difference = sum(sum(abs(A1-A2)));  if (difference > limit)    error('Difference to large.')    %disp('Difference to large.')  else    disp('  Test Ok.')  end%ifend%if(0)% Expected result :%	No error message.% Real result :% [ ]disp('Test 60d')% Comments%	'aimtEx'% Expected result :% Real result :% [ ]disp('Test 60e')% Comments%	'expAnt'% Expected result :% Real result :if(0)% [ ]disp('Test 60ff: Comparison between iso2DArr and LA steering vector')% Comments%  Test of 'iso2DArr'%       Implementation of the test is not finnished.  lambda = 1.37;  distElem = lambda/2;  noElem = 37;  beamSpaceTrans = ones(noElem,1);  doas = d2r([-180 -156 -90 -67.45 -27.234 -1 0 1 pi 43.43 90 134 180]);  elementPositions = [ ; zeros(1,noElem)];% Antenna type 'LA':  elem = defant('isotropElem');  LAant = defant('LA',elementPositions(1,:).',[],elem);% Antenna type 'iso2DArr':  ant2 = defant('');% Expected result :% Real result :% Expected result :% Real result :% ...end%if(0)elseif (testnr==101)% *****************************************************************************% [ ]  : Test 101% Sign:   Datum:%% Test of pulse code modulations.%% *****************************************************************************% Comments% [ ]% Comments% Test of Frank Codes.disp('Test 101a')  clear all  code16Calc = getmod('frank',4);  code16Expect = [1, 1, 1, 1,   1, i, -1, -i,   1, -1, 1, -1,   1 -i, -1, i].';  extraRelTol = 2;  % Allow for some extra tolerance because of many    % floating point operations.  limit = extraRelTol * 0.5 * size(code16Calc,1)*size(code16Expect,2)*eps;  difference = sum(sum(abs(code16Calc-code16Expect)));  if (difference > limit)    error('DBT-Error: Difference to large.')  else    disp('  Test Ok.')  end%if% Expected result :% No error message.% Real result :% [ ]% Comments% Test of Frank Codes.disp('Test 101b')  clear all  codeCalc = getmod('frank',1);  codeExpect = 1;  extraRelTol = 2;  % Allow for some extra tolerance because of many    % floating point operations.  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 :% [ ]% Comments% Test of Barker Codes.disp('Test 101c')  clear all  codeCalc = getmod('barker','4b');  codeExpect = [1, 1, 1, -1].';  limit = 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 :% [ ]% Comments% Test of Barker Codes.disp('Test 101d')  clear all  codeCalc = getmod('barker','13');  codeExpect = [1, 1, 1, 1, 1, -1, -1, 1, 1, -1, 1, -1, 1].';  limit = 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 :% [ ]% Comments% Test of a phaseshift of pi radians of the code.disp('Test 101e')  clear all  codeCalc = getmod('barker','11',1);  codeExpect = -1*[1,1,1,-1,-1,-1,1,-1,-1,1,-1].';  limit = 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 :% [ ]% Comments% Test of a fliparound (permutation) of the code.disp('Test 101f')  clear all  codeOrder = 8; % The length of the Frank code is codeOrder^2.  codeCalc = getmod('frank',8,[],1);  codeExpect = exp(i*2*pi*(1/codeOrder)*([1:codeOrder]-1).'*([1:codeOrder]-1));    % A Frank code.  codeExpect = codeExpect(:);  codeExpect = flipud(codeExpect);  limit = 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 :% [ ]% Comments% Test of rectangular code.disp('Test 101g')  clear all  codeCalc = getmod('rect',7,1,1);  codeExpect = -1*[1 1 1 1 1 1 1].';  limit = 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 :% [ ]% Comments% Test of a Chirp (linear FM) code.disp('Test 101h')  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 :% [ ]

⌨️ 快捷键说明

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