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

传真(Fax)编程

开发平台:

Matlab

  1. function [y] = stretch(nscat,taup,f0,b,rrec,scat_range,scat_rcs,winid)
  2. eps = 1.0e-16;
  3. htau = taup / 2.;
  4. c = 3.e8;
  5. trec = 2. * rrec / c;
  6. n = fix(2. * trec * b);
  7. m = power_integer_2(n);
  8. nfft = 2.^m;
  9. x(nscat,1:n) = 0.;
  10. y(1:n) = 0.;
  11. if( winid == 0.)
  12.    win(1:n) = 1.;
  13.    win =win';
  14. else
  15.    if(winid == 1.)
  16.       win = hamming(n);
  17.    else
  18.       if( winid == 2.)
  19.          win = kaiser(n,pi);
  20.       else
  21.          if(winid == 3.)
  22.             win = chebwin(n,60);
  23.          end
  24.       end
  25.    end
  26. end
  27. deltar = c / 2. / b;
  28. max_rrec = deltar * nfft / 2.;
  29. maxr = max(scat_range);
  30. if(rrec > max_rrec | maxr >= rrec )
  31.    'Error. Receive window is too large; or scatterers fall outside window'
  32.    return
  33. end
  34. t = linspace(0,taup,n);
  35. for j = 1:1:nscat
  36.     range = scat_range(j);% + rmin;
  37.    psi1 = 4. * pi * range * f0 / c - ...
  38.       4. * pi * b * range * range / c / c/ taup;
  39.    psi2 = (2*4. * pi * b * range / c / taup) .* t;
  40.    x(j,:) = scat_rcs(j) .* exp(i * psi1 + i .* psi2);
  41.    y = y + x(j,:);
  42. end
  43. figure(1)
  44. plot(t,real(y),'k')
  45. xlabel ('Relative delay - seconds')
  46. ylabel ('Uncompressed echo')
  47. grid
  48. ywin = y .* win';
  49. yfft = fft(y,n) ./ n;
  50. out= fftshift(abs(yfft));
  51. figure(2)
  52. delinc = rrec/ n;
  53. %dist = linspace(-delinc-rrec/2,rrec/2,n);
  54. dist = linspace((-rrec/2), rrec/2,n);
  55. plot(dist,out,'k')
  56. xlabel ('Relative range in meters')
  57. ylabel ('Compressed echo')
  58. axis auto
  59. grid