Matlab雷达回波数据模拟

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

clear, hold off

format compact

J = 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, seconds

W = 10e6; % chirp bandwidth, Hz

fs = 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 pulses

jkl = 0:(Np-1); % pulse index array, 慢时间采样的序列,注意第一个PRI标记为0是为了慢时间起始时刻从零开始

PRF = 10.0e3; % PRF in Hz

PRI = (1/PRF); % PRI in sec

T_0 = PRI*jkl; % relative start times of pulses, in sec

g = ones(1,Np); % gains of pulses

T_out = [12 40]*1e-6; % start and end times of range window in sec,这个就是接收窗的时间宽度Trec

T_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 in Hz; 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

ranges = [2 3.8 4.4 4.4]*1e3; % in km

SNR = [-3 5 10 7]; % dB

vels = [-0.4 -0.2 0.2 0.4]*vua; % in m/sec% From SNR, we compute relative RCS using the idea that SNR is proportional

% to RCS/R^4. Students will be asked to deduce relative RCS.

rel_RCS = (10.^(SNR/10)).*(ranges.^4);

rel_RCS = db(rel_RCS/max(rel_RCS),'power')

fprintf('\nThere are %g targets with the following parameters:',Ntargets)

for i = 1:Ntargets

fprintf('\n range=%5.2g km, SNR=%7.3g dB, rel_RCS=%7.3g dB, vel=%9.4g m/s', ...

ranges(i)/1e3,SNR(i),rel_RCS(i),vels(i) )

end% Now form the range bin - pulse number data mapdisp(' ')

disp(' ')

disp('... forming signal component')

y = radar(s,fs,T_0,g,T_out,T_ref,fc,ranges,SNR,vels); % y是337-by-20的矩阵% add thermal noise with unit powerdisp('... adding noise')

%randn('seed',77348911);

[My,Ny] = size(y);

nzz = (1/sqrt(2))*(randn(My,Ny) + J*randn(My,Ny)); % 产生方差为1的复高斯白噪声

y = y + nzz;% create log-normal (ground) "clutter" with specified C/N and 具体原理不清楚,需要时套用此格式即可!

% log-normal standard deviation for amplitude, uniform 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=10 .^((SDxdB*randn(My,Ny))/10);

ncc = ncc.*exp( J*2*pi*rand(My,Ny) );% Force the power spectrum shape to be Gaussiandisp('... correlating and adding clutter')

G = exp(-(0:4)'.^2/1.0);

G = [G;zeros(Ny-2*length(G)+1,1);G(length(G):-1:2)];for i=1:My

ncc(i,:)=ifft(G'.*fft(ncc(i,:)));

end

% rescale clutter to have desired C/N ratio

pcc = var(ncc(:));

ncc = sqrt((10^(CN/10))/pcc)*ncc;

% 10*log10(var(ncc(:))/var(nzz(:))) % check actual C/N% Now weight the clutter power in range for assume R^2 (beam-limited) loss

cweight = T_out(1)*((T_out(1) + (0:My-1)'*(1/fs)).^(-1));

cweight = cweight*ones(1,Np);

ncc = ncc.*cweight; % var(ncc)可以看出20列clutter的方差均在30左右y = y +

相关文档
最新文档