Advertisement
Guest User

DANKIUM

a guest
Apr 26th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. %% Setup
  2. N=1000;
  3. Eavg=1;
  4. E_noise=.01;
  5.  
  6. %% Contellation Creation
  7. PSK_const(:,1)=sqrt(Eavg)*cos(0:pi/8:15*pi/8);
  8. PSK_const(:,2)=sqrt(Eavg)*sin(0:pi/8:15*pi/8);
  9.  
  10. PAM_const = ((0:15)-7.5)';
  11. PAM_const = PAM_const/sqrt(sum(PAM_const.^2)/16)*sqrt(Eavg);
  12.  
  13. QAM_const = zeros(16,2);
  14. for i=0:3
  15. QAM_const((4*i+1):4*(i+1),1)=(i-1.5);
  16. QAM_const((i+1):4:end,2) = (i-1.5);
  17. end
  18. QAM_const = QAM_const/sqrt(sum(sum((QAM_const).^2))/16)*sqrt(Eavg);
  19.  
  20. %% Transmit Sequence Creation
  21. PSK_symbols = ceil(16*rand(1,N));
  22. PSK_transmit = PSK_const(PSK_symbols,:);
  23.  
  24. PAM_symbols = ceil(16*rand(1,N));
  25. PAM_transmit = PAM_const(PAM_symbols);
  26.  
  27. QAM_symbols = ceil(16*rand(1,N));
  28. QAM_transmit = QAM_const(QAM_symbols,:);
  29.  
  30. %% Channel
  31. Z = sqrt(E_noise)*randn(N,5);
  32.  
  33. PSK_receive = PSK_transmit + Z(:,1:2);
  34. PAM_receive = PAM_transmit + Z(:,3);
  35. QAM_receive = QAM_transmit + Z(:,4:5);
  36.  
  37. %% Decision Rule
  38. PAM_decision = zeros(size(PAM_symbols));
  39. PSK_decision = zeros(size(PSK_symbols));
  40. QAM_decision = zeros(size(QAM_symbols));
  41.  
  42. for iSample = 1:N
  43. [temp PAM_decision(iSample)] = min(abs(PAM_receive(iSample)-PAM_const));
  44. [temp PSK_decision(iSample)] = min(abs(PSK_receive(iSample,1)-PSK_const(:,1)).^2 + abs(PSK_receive(iSample,2)-PSK_const(:,2)).^2);
  45. [temo QAM_decision(iSample)] = min(abs(QAM_receive(iSample,1)-QAM_const(:,1)).^2 + abs(QAM_receive(iSample,2)-QAM_const(:,2)).^2);
  46. end
  47.  
  48. %% Statistics
  49. PAM_error_rate = sum(PAM_decision ~= PAM_symbols)/N;
  50. PSK_error_rate = sum(PSK_decision ~= PSK_symbols)/N;
  51. QAM_error_rate = sum(QAM_decision ~= QAM_symbols)/N;
  52.  
  53. %% Plots
  54. figure;
  55. subplot(2,1,1)
  56. plot(PAM_receive(:,1),zeros(size(PAM_receive)),'b.')
  57. title('Received PAM scatterplot')
  58. xlabel('V_1')
  59. ylabel('V_2')
  60. subplot(2,2,3)
  61. plot(PSK_receive(:,1), PSK_receive(:,2),'b.')
  62. title('Received PSK scatterplot');
  63. xlabel('V_1')
  64. ylabel('V_2')
  65. subplot(2,2,4)
  66. plot(QAM_receive(:,1), QAM_receive(:,2),'b.')
  67. title('Received QAM scatterplot');
  68. xlabel('V_1')
  69. ylabel('V_2')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement