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

传真(Fax)编程

开发平台:

Matlab

  1. function [ambig] = barker_ambig(uinput)
  2. % Compute and plot the ambiguity function for a Barker code
  3. %Compute the ambiguity function
  4. % by utilizing the FFT through combining multiple range cuts
  5. N = size(uinput,2);
  6. tau = N;
  7. Barker_code = uinput;
  8. samp_num = size(Barker_code,2) *10;
  9. n = ceil(log(samp_num) / log(2));
  10. nfft = 2^n;
  11. u(1:nfft) = 0;
  12. j = 0;
  13. for index = 1:10:samp_num
  14.     index;
  15.     j = j+1;
  16.     u(index:index+10-1) = Barker_code(j);
  17. end
  18. v = u;
  19. delay = linspace(-tau, tau, nfft);
  20. freq_del = 12 / tau /100;
  21. j = 0;
  22. vfft = fft(v,nfft);
  23. for freq = -6/tau:freq_del:6/tau;
  24.     j = j+1;
  25.     exf = exp(sqrt(-1) * 2. * pi * freq .* delay);
  26.     u_times_exf = u .* exf;
  27.     ufft = fft(u_times_exf,nfft);
  28.     prod = ufft .* conj(vfft);
  29.     ambig(:,j) = fftshift(abs(ifft(prod))');
  30. end
  31. freq = -6/tau:freq_del:6/tau;
  32. delay = linspace(-N,N,nfft);
  33. figure (1)
  34. mesh(freq,delay,ambig ./ max(max(ambig)))
  35. colormap([.5 .5 .5])
  36. colormap(gray)
  37. axis tight
  38. xlabel('frequency')
  39. ylabel('delay')
  40. zlabel('ambiguity function')
  41. figure (2)
  42. value = 10 * N ;
  43. plot(delay,ambig(:,51)/value,'k')
  44. xlabel('delay')
  45. ylabel('normalized amibiguity cut for f=0')
  46. grid
  47. axis tight
  48. figure (3)
  49. contour(freq,delay,ambig ./ max(max(ambig)))
  50. colormap([.5 .5 .5])
  51. colormap (gray)
  52. xlabel('frequency')
  53. ylabel('delay')
  54. grid on
  55. return