clc;clear all;close all; M=32; %32-PSK
data=round(rand(1,1024000)); % information
M=M/2;data_NZR=2*data-1;
s_p_data=reshape(data_NZR,M,length(data)/M);
br=10.^6; %transmission bit rate 1000000
f=br; T=1/br; % bit duration
t=T/199:T/199:T; % Time vector for one bit
y=[];yy=cell(1,M); % mod
for(i=1:length(data)/M)
for k=1:M
yy{k}=s_p_data(k,i)*cos(2*pi*f*t+(k-1)*2*pi/M);
end
yyy=yy{k};
for k=2:M
yyy=yyy+yy{k};
end
y=[y yyy]; % modulated signal
end
Tx_sig=y; % transmitting signal after modulation
tt=T/99:T/99:(T*length(data))/2;
% demodulation
SNR = -30:2:0;
for jj=1:length(SNR)
Rx_sig = awgn(Tx_sig,SNR(jj),'measured'); Rx_data=[];
for(i=1:1:length(data)/M)
Z_in=cell(1,M);Rx_data1=[];
for k=1:M
% Rx_data1=[];
Z_in{k}=Rx_sig((i-1)*length(t)+1:i*length(t)).*cos(2*pi*f*t+(k-1)*2*pi/M); %rx*carrier signal
Z_in_intg=(trapz(t,Z_in{k}))*(2/T);% integration using trapizodial rule
% if(Z_in_intg>0) % Decision Maker
if(Z_in_intg>0) % Decision Maker
Rx_data1=[Rx_data1 1];%Rx_data1(k)=1;
else
Rx_data1=[Rx_data1 0];%Rx_data1(k)=0;
end
end
Rx_data=[Rx_data Rx_data1]; % Received Data vector
end
BER(jj) = sum(abs(Rx_data-data))/length(data);
end
plot(SNR,BER),title(['BER for ',num2str(2*M),'-PSK Modulation']);xlabel('SNR');ylabel('BER');
% figure
% Fs=2e6; window=500; noverlap=200; f=500;
% [pxx f] = pwelch(Tx_sig,window,noverlap,f,Fs); pxx = pxx/max(pxx);
% plot(f,10*log(pxx)),xlabel('Frequency'), ylabel('PSD')
% title(['PSD for ',num2str(2*M),'-PSK Modulation']);hold on