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

📄 compsim5.m

📁 阵列信号处理的工具箱
💻 M
字号:
function sigvar = compsim5(antenna, waveform, noPulses, noRangeBins,targetType, targetParameters, noiseType, noiseParameters, clutterType, clutterParameters)%  function sigvar = compsim5(antenna, waveform, noPulses, noRangeBins,%                             targetType, targetParameters, noiseType,%                             noiseParameters, clutterType, clutterParameters)%%  Simulates received antenna signals in active mode (radar).%  There can be several range bins. A Barker 13 modulation code is used.%  All the targets are located in range bin 1, which after pulse compression%  becomes range bin 13.%  The target, noise and clutter signals are summed to form the output signal.%%  The testing of this function is not finnished.%%  sigvar         (RxCompSigT)%  antenna        (AntDefT)%  waveform       (WaveformT or RealScalarT): Waveform, including wavelength,%    number of range bins, number of pulses, modulation within a pulse etc.%    If of data type RealScalarT it is the wavelength (lambda) [m].%  noPulses       (IntScalarT)  : Number of snapshots.%  noRangeBins    (IntScalarT   : Number of range bins.%  targetType     (StringT)     : Target type, se below.%  targetParameters  Type and contents depends on targetType, see below.%  noiseType      (StringT)     : Noise type, se below.%  noiseParameters   Type and contents depends on noiseType, see below.%  clutterType    (StringT)     : Clutter type, se below.%  clutterParameters Type and contents depends on clutterType, see below.%%  targetType =%    'const'  : Constant source signals.%      targetParameters (Matrix = [theta, phi, SNR, alpha, dalpha, dist]%      theta        (RealVectorT) : Target directions (radians).%      phi          (RealVectorT) : Target directions (radians). Unused.%      SNR          (RealVectorT) : Target SNRs [dB].%      alpha        (RealVectorT) : Target start phases [radians].%      dalpha       (RealVectorT) : Target phase shifts (doppler shifts) %                                   [radians].%      dist          (RealVectorT): Target distances [m]. This is used as%                                   the focusing distance when calculating%                                   the spatial steering vectors. The targets%                                   are always located in range bin 1 (see %                                   above).%    'rndnw'    : Complex gaussian random source signals. Uncorrelated between%        targets and in time.%      targetParameters (Matrix) = [theta, phi, SNR, alpha, dalpha, dist]%        Parameters theta, phi, dalpha, dist as for 'const'. The other%          parameters are unused.%    'rndn'   : Complex gaussian random source signals.%      targetParameters (Matrix) = [theta, phi, SNR, alpha, dalpha, dist,%        tgtCorrMat]%      Parameters theta, phi, dalpha, dist as for 'const'. The other%        parameters are unused.%      tgtCorrMat (CxMatrix)  : Source correlation matrix.%    'notgt'  : No target signals.%%  noiseType =%    'rndnw'  : Complex gaussian noise. Uncorrelated between channels and%     in time.%    'nonoise': No noise.% *****************************************************************************%   *  DBT, A Matlab Toolbox for Radar Signal Processing  *% (c) FOA 1994-2000. See the file dbtright.m for copyright notice.%%%  Start        : 951220 Svante Bj鰎klund (svabj).%  Latest change: $Date: 2000/10/16 15:20:13 $ $Author: svabj $.%  $Revision: 1.13 $% *****************************************************************************% Sample time also as input parameter!?! Waveform or PRI also ?% ----------------------------------------------------------------------- %% Pick out fields from input parameters.% ----------------------------------------------------------------------- %chkdtype(antenna, 'AntDefT')chkdtype(noPulses, 'IntScalarT')chkdtype(targetType, 'StringT')chkdtype(noiseType, 'StringT')noElem =      antenna.noElem;if (isstruct(waveform))  lambda = waveform.wavelength;else  % Allows a simplified call.  lambda = waveform;end%ifif (strcmp(noiseType,'nonoise'))  sammansattning = 2;elseif (strcmp(targetType,'notgt'))  sammansattning = 3;elseif (strcmp(noiseType,'nonoise') & strcmp(targetType,'notgt'))  error('DBT-Error: Illegal combination of source and noise signals.')else  sammansattning = 1;end%if% ------------------- Target signals ------------------------if (~strcmp(targetType,'notgt'))%D =      antenna.distElem;T =      noPulses;M =      size(targetParameters,1);  % Number of targets.theta =  targetParameters(:,1);     % Target directions (radians).%phi =      targetParameters(:,2);     % Target directions (radians).SNR =       targetParameters(:,3);     % SNR for each target [dB].alpha =  targetParameters(:,4);     % Phase at the first antenna                  %  element for each target [radians].dalpha =    targetParameters(:,5);     % Phase increment for each                  %  target (doppler shift).dist =      targetParameters(:,6);% tgtRangeBins =  rem(round(dist./75),250);if (size(targetParameters,2) > 6)  tgtCorrMat =    targetParameters(:,7:(7-1+size(targetParameters,1)));end% ----------------------------------------------------------------------- %% Simulate the signals.% ----------------------------------------------------------------------- %if (nargin > 8)  error('DBT-Error: Clutter is not implemented.')end%if% M錶signaler.% B(m,n) 鋜 en matris med amplitud och fas hos m錶signalerna vid ena 鋘den% av gruppantennen.% m 鋜 m錶index och n tidsindex. (m 鋜 radindex och n kolumnindex i matrisen)% Bilda en m錶signalmatris.M = size(theta,1);   % Antal m錶.if (strcmp(targetType,'const'))  Alpha = zeros(M,T);  for t=1:T    Alpha(:,t) = alpha;  end%for t  SNRdet  = 10.^(SNR./20);  SNRdet = copycol(SNRdet,T);  B =  SNRdet.*ones(M,T).*exp(j*Alpha);elseif (strcmp(targetType,'rndnw'))  sigmab = sqrt(0.5)*10.^(SNR./20);    % Source standard deviation.  sigmab = copycol(sigmab,T);  B = sigmab.*(randn(M,T) + j*randn(M,T));elseif (strcmp(targetType,'rndn')) % This part is from the FOA SASP course 96.  if (size(tgtCorrMat,2) < size(targetParameters,1))    error('DBT-Error: Missing source correlation matrix.')  end  M = size(theta,1);  [U,S,V] = svd(tgtCorrMat);  B=(1/sqrt(2))*U*sqrt(S)*(randn(M,T) + j*randn(M,T));elseif (strcmp(targetType,'notgt'))  % Do nothing.else  error('DBT-Error: The source model does not exist.')end%if% Ordna konstant fasskift mellan tidssamplena. Simulates dopples shift due to movement.Bskift   = zeros(M,T);for t=1:T  Bskift(:,t) =exp(j*dalpha*(t-1));end%for tB = B.*Bskift;% % (Antenna element (and subarray) effects. )% Removed. Is part of spastemat.A = spastemat(antenna,theta',lambda,dist);end%if ~notgt% ------------------- Noise signals ------------------------% Brussignaler.% Nt(m,n) inneh錶ler komplext brus. m 鋜 antennelementindex. n 鋜 tidsindex.if (strcmp(noiseType,'rndnw'))  sigman = sqrt(0.5);         % Noise standard deviation.  NNt = zerosm([noPulses,noRangeBins,noElem,1,1]);  for k=1:noRangeBins    Nt   = sigman*(randn(noElem,noPulses) + j*randn(noElem,noPulses));    NNt = setm(NNt,Nt',':',k,':',1,1);  endelseif (strcmp(noiseType,'nonoise'))  NNt = zerosm([noPulses,noRangeBins,noElem,1,1]);else  error('DBT-Error: The noise model does not exist.')end%ifif (~(isstruct(waveform)))    pulsecode = [1 -1 1 -1 1 1 -1 -1 1 1 1 1 1]; % Barker 13 pulsecode  else    pulsecode = waveform.pModulation.';end%if% Mottagna signaler fr錸 antennelementen.% XX(m,n,p,1,1) inneh錶ler mottagna signaler fr錸 antennelementen.% m 鋜 pulsindex. n 鋜 avst錸dsindex, p 鋜 kanalindexXX = zerosm([noPulses,noRangeBins,noElem,1,1]);L = length(pulsecode);if noRangeBins<L  disp('Number of range bins is less than the length of the pulse code')  disp('No puls code modulation is performed')  for k=1:noRangeBins    if (sammansattning == 1)      Nt = getm(NNt,':',k,':',1,1);      Nt = reshape(Nt,noElem,noPulses);      X = A*B + Nt;    elseif (sammansattning == 2)      X = A*B;    elseif (sammansattning == 3)      Nt = getm(NNt,':',k,':',1,1);      Nt = reshape(Nt,noElem,noPulses);      X = Nt;    else      error('DBT-Error: Sammans鋞tningen finns inte.')    end%if    XX = setm(XX,X.', ':',k,':',1,1);  % Should be .' instead of ' ??? conj    disploop(k, noRangeBins)  end%forelse  for k=1:L    if (sammansattning == 1)      Nt = getm(NNt,':',k,':',1,1);      Nt = reshape(Nt,noElem,noPulses);      X = pulsecode(k)*A*B + Nt;    elseif (sammansattning == 2)      X = pulsecode(k)*A*B;    elseif (sammansattning == 3)      Nt = getm(NNt,':',k,':',1,1);      Nt = reshape(Nt,noElem,noPulses);      X = Nt;    else      error('DBT-Error: Sammans鋞tningen finns inte.')    end%if    XX = setm(XX,X.', ':',k,':',1,1);  % Should be .' instead of ' ??? conj    disploop(k, L)  end%forendif noRangeBins>L  for k=L+1:noRangeBins    if (sammansattning == 1)      Nt = getm(NNt,':',k,':',1,1);      Nt = reshape(Nt,noElem,noPulses);      X = Nt;    elseif (sammansattning == 2)      X = zeros(noElem,noPulses);    elseif (sammansattning == 3)      Nt = getm(NNt,':',k,':',1,1);      Nt = reshape(Nt,noElem,noPulses);      X = Nt;    else      error('DBT-Error: Sammans鋞tningen finns inte.')    end%if    XX = setm(XX,X.', ':',k,':',1,1);  % Should be .' instead of ' ??? conj    disploop(k, noRangeBins)  end%forenddbtinfo('');	%New line.% ----------------------------------------------------------------------- %% Return data.% ----------------------------------------------------------------------- %signals = zerosm([noPulses,noRangeBins,noElem,1,1]); % Only one trial is implemented.for k=1:noRangeBins  X  = getm(XX,':',k,':',1,1);  signals = setm(signals, X, ':',k,':',1,1);endif (~(isstruct(waveform)))  waveform = defwave(lambda,noRangeBins,noPulses,pulsecode,[]);  %else  %  waveform.wavelength = lambda;end%ifnew = 1;if (new)  sigvar = RxRadarSigT(signals, {antenna, waveform});else  sigvar.dataType = 'RxRadarSigT';  sigvar.signals = signals;  sigvar.antenna = antenna;  sigvar.waveform = waveform;end%if%endfunction compsim5function disploop(counter, maxNo)    infoStr = sprintf('compsim5: ranbin = %d(%d)\r',counter,maxNo);    dbtinfo(infoStr,1);%endfunction disploop

⌨️ 快捷键说明

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