📄 compsim5.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 + -