Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %% Setup
- N=1000;
- Eavg=1;
- E_noise=.01;
- %% Contellation Creation
- PSK_const(:,1)=sqrt(Eavg)*cos(0:pi/8:15*pi/8);
- PSK_const(:,2)=sqrt(Eavg)*sin(0:pi/8:15*pi/8);
- PAM_const = ((0:15)-7.5)';
- PAM_const = PAM_const/sqrt(sum(PAM_const.^2)/16)*sqrt(Eavg);
- QAM_const = zeros(16,2);
- for i=0:3
- QAM_const((4*i+1):4*(i+1),1)=(i-1.5);
- QAM_const((i+1):4:end,2) = (i-1.5);
- end
- QAM_const = QAM_const/sqrt(sum(sum((QAM_const).^2))/16)*sqrt(Eavg);
- %% Transmit Sequence Creation
- PSK_symbols = ceil(16*rand(1,N));
- PSK_transmit = PSK_const(PSK_symbols,:);
- PAM_symbols = ceil(16*rand(1,N));
- PAM_transmit = PAM_const(PAM_symbols);
- QAM_symbols = ceil(16*rand(1,N));
- QAM_transmit = QAM_const(QAM_symbols,:);
- %% Channel
- Z = sqrt(E_noise)*randn(N,5);
- PSK_receive = PSK_transmit + Z(:,1:2);
- PAM_receive = PAM_transmit + Z(:,3);
- QAM_receive = QAM_transmit + Z(:,4:5);
- %% Decision Rule
- PAM_decision = zeros(size(PAM_symbols));
- PSK_decision = zeros(size(PSK_symbols));
- QAM_decision = zeros(size(QAM_symbols));
- for iSample = 1:N
- [temp PAM_decision(iSample)] = min(abs(PAM_receive(iSample)-PAM_const));
- [temp PSK_decision(iSample)] = min(abs(PSK_receive(iSample,1)-PSK_const(:,1)).^2 + abs(PSK_receive(iSample,2)-PSK_const(:,2)).^2);
- [temo QAM_decision(iSample)] = min(abs(QAM_receive(iSample,1)-QAM_const(:,1)).^2 + abs(QAM_receive(iSample,2)-QAM_const(:,2)).^2);
- end
- %% Statistics
- PAM_error_rate = sum(PAM_decision ~= PAM_symbols)/N;
- PSK_error_rate = sum(PSK_decision ~= PSK_symbols)/N;
- QAM_error_rate = sum(QAM_decision ~= QAM_symbols)/N;
- %% Plots
- figure;
- subplot(2,1,1)
- plot(PAM_receive(:,1),zeros(size(PAM_receive)),'b.')
- title('Received PAM scatterplot')
- xlabel('V_1')
- ylabel('V_2')
- subplot(2,2,3)
- plot(PSK_receive(:,1), PSK_receive(:,2),'b.')
- title('Received PSK scatterplot');
- xlabel('V_1')
- ylabel('V_2')
- subplot(2,2,4)
- plot(QAM_receive(:,1), QAM_receive(:,2),'b.')
- title('Received QAM scatterplot');
- xlabel('V_1')
- ylabel('V_2')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement