hrr_profile.m
上传用户:szahd2008
上传日期:2020-09-25
资源大小:1275k
文件大小:3k
源码类别:

传真(Fax)编程

开发平台:

Matlab

  1. function [hl] = hrr_profile (nscat, scat_range, scat_rcs, n, deltaf, prf, v, rnote,winid)
  2. % Range or Time domain Profile
  3. % Range_Profile returns the Range or Time domain plot of a simulated 
  4. % HRR SFWF returning from a predetermined number of targets with a predetermined
  5. % RCS for each target.
  6. c=3.0e8;  % speed of light (m/s)
  7. num_pulses   = n;
  8. SNR_dB = 40;
  9. nfft = 256;
  10. %carrier_freq = 9.5e9; %Hz (10GHz)
  11. freq_step    = deltaf; %Hz (10MHz)
  12. V = v;  % radial velocity (m/s)  -- (+)=towards radar (-)=away
  13. PRI = 1. / prf; % (s)
  14. if (nfft > 2*num_pulses)
  15.     num_pulses = nfft/2;
  16. else
  17. end
  18. Inphase = zeros((2*num_pulses),1);
  19. Quadrature = zeros((2*num_pulses),1);
  20. Inphase_tgt    = zeros(num_pulses,1);
  21. Quadrature_tgt = zeros(num_pulses,1);
  22. IQ_freq_domain = zeros((2*num_pulses),1);
  23. Weighted_I_freq_domain = zeros((num_pulses),1);
  24. Weighted_Q_freq_domain = zeros((num_pulses),1);
  25. Weighted_IQ_time_domain = zeros((2*num_pulses),1);
  26. Weighted_IQ_freq_domain = zeros((2*num_pulses),1);
  27. abs_Weighted_IQ_time_domain = zeros((2*num_pulses),1);
  28. dB_abs_Weighted_IQ_time_domain = zeros((2*num_pulses),1);
  29. taur = 2. * rnote / c;
  30. for jscat = 1:nscat
  31.    ii = 0;
  32.    for i = 1:num_pulses
  33.       ii = ii+1;
  34.       rec_freq = ((i-1)*freq_step);
  35.       Inphase_tgt(ii) = Inphase_tgt(ii) + sqrt(scat_rcs(jscat)) * cos(-2*pi*rec_freq*...
  36.          (2.*scat_range(jscat)/c - 2*(V/c)*((i-1)*PRI + taur/2 + 2*scat_range(jscat)/c)));
  37.       Quadrature_tgt(ii) = Quadrature_tgt(ii) + sqrt(scat_rcs(jscat))*sin(-2*pi*rec_freq*...
  38.          (2*scat_range(jscat)/c - 2*(V/c)*((i-1)*PRI + taur/2 + 2*scat_range(jscat)/c)));
  39.    end
  40. end
  41. if(winid >= 0)
  42.     window(1:num_pulses) = hamming(num_pulses);
  43. else
  44.     window(1:num_pulses) = 1;
  45. end
  46. Inphase = Inphase_tgt;
  47. Quadrature = Quadrature_tgt;
  48. Weighted_I_freq_domain(1:num_pulses) = Inphase(1:num_pulses).* window';
  49. Weighted_Q_freq_domain(1:num_pulses) = Quadrature(1:num_pulses).* window';
  50. Weighted_IQ_freq_domain(1:num_pulses)= Weighted_I_freq_domain + ...
  51.    Weighted_Q_freq_domain*j;
  52. Weighted_IQ_freq_domain(num_pulses:2*num_pulses)=0.+0.i;
  53. Weighted_IQ_time_domain = (ifft(Weighted_IQ_freq_domain));
  54. abs_Weighted_IQ_time_domain = (abs(Weighted_IQ_time_domain));
  55. dB_abs_Weighted_IQ_time_domain = 20.0*log10(abs_Weighted_IQ_time_domain)+SNR_dB;
  56. % calculate the unambiguous range window size
  57. Ru = c /2/deltaf;
  58. hl = dB_abs_Weighted_IQ_time_domain;
  59. numb = 2*num_pulses;
  60. delx_meter = Ru / numb;
  61. xmeter = 0:delx_meter:Ru-delx_meter;
  62. plot(xmeter, dB_abs_Weighted_IQ_time_domain,'k')
  63. xlabel ('relative distance - meters')
  64. ylabel ('Range profile - dB')
  65. grid
  66. return