ip_07_09.m
上传用户:m_sun_001
上传日期:2014-07-30
资源大小:1115k
文件大小:1k
源码类别:

matlab例程

开发平台:

Matlab

  1. % MATLAB script for Illustrative Problem 9, Chapter 7.
  2. % echo on
  3. clear;
  4. K=10; N=2*K; Ts=25; T=N*Ts;
  5. a=rand(1,(K-1)*4);  % k-1符号,1个保护间隔0
  6. a=sign(a-0.5);
  7. b=reshape(a,K-1,4);
  8. % Generate the 16QAM points
  9. XXX=2*b(:,1)+b(:,2)+j*(2*b(:,3)+b(:,4));    % 随机声称9个16点QAM星座点
  10. XX=XXX';
  11. X=[0 XX 0 conj(XX(K-1:-1:1))];    % X长度为20,等于N
  12. xt=zeros(1,T+1);
  13. % IDFT t
  14. for t=0:T   % 载波分辨力
  15.   for k=0:N-1   % 载波数量
  16.      xt(t+1)=xt(t+1)+1/sqrt(N)*X(k+1)*exp(j*2*pi*k*t/T);
  17.   end
  18. end
  19. % IDFT n
  20. xn=zeros(1,N);
  21. for n=0:N-1
  22.   for k=0:N-1
  23.     xn(n+1)=xn(n+1)+1/sqrt(N)*X(k+1)*exp(j*2*pi*n*k/N);
  24.   end
  25. end
  26. % IFFT
  27. xn1=ifft(X,N)*sqrt(N);
  28. % pause % press any key to see a plot of x(t)
  29. plot([0:T],real(xt),'r',[0:T/N:T-T/N],xn,'.b',[0:T/N:T-T/N],xn1,'og'),grid
  30. legend('连续信号','采样信号','IFFT信号*4.5')
  31. hold on % 画出每个子载波波形
  32.     for ii=[10,12]
  33.         plot([0:T],1/sqrt(N)*X(ii)*exp(j*2*pi*(ii-1)*[0:T]/T),':')
  34.     end
  35. hold off
  36. % Check the difference between xn and samples of x(t)
  37. for n=0:N-1
  38.   d(n+1)=xt(T/N*n+1)-xn(1+n);
  39.   % echo off
  40. end
  41. % echo on
  42. e=norm(d);
  43. Y=zeros(1,K);
  44. % DFT
  45. for k=0:K-1
  46.   for n=0:N-1
  47.     Y(k+1)=Y(k+1)+1/sqrt(N)*xn(n+1)*exp(-j*2*pi*k*n/N);
  48.   end
  49. end
  50. Y1=fft(xn1,N)/sqrt(N);
  51. % echo on
  52. dd=Y(1:K)-X(1:K);
  53. dd1=Y1(1:K)-X(1:K);
  54. ee=norm(dd)
  55. ee2=norm(dd1)