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

传真(Fax)编程

开发平台:

Matlab

  1. function [ambig] = prn_ambig(uinput)
  2. % Compute and plot the ambiguity function for a PRN code
  3. % Compute the ambiguity function by utilizing the FFT 
  4. % through combining multiple range cuts
  5. N = size(uinput,2);
  6. tau = N;
  7. PRN = uinput;
  8. samp_num = size(PRN,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) = PRN(j);
  17. end
  18. % set-up the array v
  19. v = u;
  20. delay = linspace(0,5*tau,nfft);
  21. freq_del = 8 / tau /100;
  22. j = 0;
  23. vfft = fft(v,nfft);
  24. for freq = -4/tau:freq_del:4/tau;
  25.     j = j+1;
  26.     exf = exp(sqrt(-1) * 2. * pi * freq .* delay);
  27.     u_times_exf = u .* exf;
  28.     ufft = fft(u_times_exf,nfft);
  29.     prod = ufft .* conj(vfft);
  30.     ambig(:,j) = fftshift(abs(ifft(prod))');
  31. end
  32. freq = -4/tau:freq_del:4/tau;
  33. delay = linspace(-N,N,nfft);
  34. figure(1)
  35. mesh(freq,delay,ambig ./ max(max(ambig)))
  36. % colormap([.5 .5 .5])
  37. % colormap(gray)
  38. axis tight
  39. xlabel('frequency')
  40. ylabel('delay')
  41. zlabel('ambiguity function a PRN code')
  42. figure(2)
  43. plot(delay,ambig(:,51)/(max(max(ambig))),'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. axis tight
  51. % colormap([.5 .5 .5])
  52. % colormap(gray)
  53. xlabel('frequency')
  54. ylabel('delay')
  55. return