
Matlab雷达回波数据模拟.docx
8页Matlab雷达回波数据模拟clear, hold offformat compactJ = sqrt(-1);close all% Get root file name for saving resultsfile=input('Enter root file name for data and listing files: ','s');% form radar chirp pulseT = 10e-6; % pulse length, secondsW = 10e6; % chirp bandwidth, Hzfs = 12e6; % chirp sampling rate, Hz; oversample by a littlefprintf('\nPulse length=%g microseconds\n',T/1e-6)fprintf('Chirp bandwidth = %g Mhz\n',W/1e6)fprintf('Sampling rate = %g Msamples/sec\n',fs/1e6)s = git_chirp(T,W,fs/W); % 120-by-1 array plot((1e6/fs)*(0:length(s)-1),[real(s) imag(s)]) title('Real and Imaginary Parts of Chirp Pulse') xlabel('time (usec)')ylabel('amplitude')gridNp = 20; % 20 pulsesjkl = 0:(Np-1); % pulse index array,慢时间采样的序列,注意第一个PRI标记为0是为了慢时间起始时刻从零开始PRF = 10.0e3;PRI = (1/PRF);T_0 = PRI*jkl;g = ones(1,Np);% PRF in Hz% PRI in sec% relative start times of pulses, in sec% gains of pulsesT_out = [12 40]*1e-6; % start and end times of range window in sec,这个就是接收 窗的时间宽度TrecT_ref = 0; % system reference time in usec T_ref = 0 指 T_0=0 时,r_at_T_0=ri ;当 T_0 〜=0 时,r_at_T_0 = ri - vi*T_0(j)fc = 10e9; % RF frequency inHz; 10 GHz is X-bandfprintf('\nWe are simulating %g pulses at an RF of %g GHz',Np,fc/1e9)fprintf('\nand a PRF of %g kHz, giving a PRI of %g usec.',PRF/1e3,PRI/1e-6) fprintf('\nThe range window limits are %g to %g usec.\n', ...T_out(1)/1e-6,T_out(2)/1e-6)% Compute unambiguous Doppler interval in m/sec % Compute unambiguous range interval in metersvua = 3e8*PRF/(2*fc); % 第一盲速 rmin = 3e8*T_out(1)/2;rmax = 3e8*T_out(2)/2;rua = 3e8/2/PRF;fprintf('\nThe unambiguous velocity interval is %g m/s.',vua)fprintf('\nThe range window starts at %g km.',rmin/1e3)fprintf('\nThe range window ends at %g km.',rmax/1e3)fprintf('\nThe unambiguous range interval is %g km.\n\n',rua/1e3)% Define number of targets, then range, SNR, and% radial velocity of each. The SNR will be the actual SNR of the target in% the final data; it will not be altered by relative range.Ntargets = 4;del_R = (3e8/2)*( 1/fs )/1e3; % in km% in kmranges = [2 3.8 4.4 4.4]* le3;SNR= [-3 5 10 7]; %dBvels = [-0.4 -0.2 0.2 0.4]*vua; % in m/sec% From SNR, we compute relativeRCS using the idea that SNR is proportional% to RCS/RA4. Students will be asked to deduce relative RCS.relRCS = (10.A(SNR/10)).*(ranges.A4);rel_RCS = db(rel_RCS/max(rel_RCS),'power1)fprintf('\nThere are %g targets with the following parameters:',Ntargets)fbr i = 1:Ntargetsfprintf('\n range=%5.2g km, SNR=%7.3g dB, rel_RCS=%7.3g dB, vel=%9.4g m/s',...ranges(i)/le3,SNR(i),rel_RCS(i),vels(i))end% Now form the range bin - pulse number data mapdispC ')disp('')disp('... forming signal component1)y = radar(s,fs,T O,g,T_out,T_ref,fc,ranges,SNR,vels); % y 是 337-by-20 的矩阵% add thermal noise with unit powerdispf... adding noise')%randnfseed,,77348911);[My,Ny] = size(y);nzz = (l/sqrt(2))*(randn(My,Ny) + J*randn(My,Ny)); % 产生方差为 1 的复高斯白噪 尸y = y + nzz;% create log-normal (ground) nclutterr, with specified C/N and 具体 原理不清楚,需要时套用此格式即可!% log-normal standard deviation fbr amplitude, unifbnn phase% Clutter is uncorrelated in range, fully correlated in pulse #disp('... creating clutter')CN = 20; % clutter-to-noise ratio in first bin (dB)SDxdB = 3; % in dB (this is NOT the sigma of the complete clutter)ncc=l0 .A((SDxdB*randn(My,Ny))/10);ncc = ncc.*exp( J*2*pi*rand(My,Ny) );% Force the power spectrum shape to beGaussiandisp('... correlating and adding clutter')G =exp(-(0:4),.A2/1.0);G = [G;zeros(Ny-2*length(G)+l,l);G(length(G):-l:2)];for i=l:Myncc(i,:)=ifft(GL*fft(ncc(i,:)));end% rescale clutter to have desired C/N ratiopcc = var(ncc(:));ncc = sqrt((10A(CN/10))/pcc)*ncc;% 10*logl0(var(ncc(:))/var(nzz(:))) % check actual C/N% Now weight the clutterpower in range fbr assume RA2 (beam-limited) losscweight = T_out( 1 )*((T_out( 1) + (0:My-l)**(l/fs)).A(-l));cweight = cweight*ones( 1 ,Np);ncc = ncc. *c weight; % var(ncc)可以看出20列clutter的方差均在30左右y = y + ncc;[My,Ny]=size(y);d=(3e8/2)*((0:My-1)*(1 /fs) + T_out(l))/le3; % T_out(l))/le3 是接收窗的起始时刻 plot(d,db(y,'voltage'))xlabel('distance (km)')ylabelfamplitude (dB)')grid% Save the data matrix in specified file.% Save the student version in the mystery file.% Also save all parameter value displays in corresponding filedata_file=[file,,.iTiat']; mystery_file=[file,' mys.mat'];Iisting_file=[file,'.lis'];cval(['save ',data_file,‘ J T W fs s Np PRF PRI T_out fc vua',...'rmin rmax rua Ntargets ranges vels SNR rel RCS y']);eval(['save -v6 ^mysteryflle/ J T W fs s Np PRF Tout fc y']);fid=fbpen(listing_file;w,);fprintf(fid,['\rDESCRIPTION OF DATA IN FILE *,file,'.mat AND ^file/ mys.matW*]);fprintf(fid,'\rPulse length = %g microseconds\r',T/1 e-6);fprintf(fid,'Chirp bandwidth = %g Mhz\r\W/le6);fprintf(fid,'Sampling rate = %g Msamples/sec\r',fs/1 e6);fprintf(fid,'\rWe are simulating %g pulses at an RF of %g GHz',Np,fc/le9);fprintf(fid,'\ra。
