www.pudn.com > awgn$qpsk.rar   To Read all the content


[file head]:
> QPSK with AWGN channel
clear;
> initialization
T=1; > symbol duration
fc=10/T; > carrier frequence
ml=2; > modulation of level ml£½1 BPSK£¬ml£½2 QPSK
nb=100; > number of transmiting bit
delta_T=T/200; > sampling interval
fs=1/delta_T; > sampling frequency
SNR=8; > signal to noise ratio
t=0:delta_T:nb*T-delta_T;
N=length(t); > number of samples
> generate source data
data=randn(1,nb)>0.5;
datanrz=data.*2-1; > translate source data into NRZ code
data1=zeros(1,nb/delta_T);
for q=1:nb
data1((q-1)/delta_T+1:q/delta_T)=datanrz(q);
end > transmitting signal

> S/P conversion
idata=datanrz(1:ml:(nb-1));
qdata=datanrz(2:ml:nb);

> QPSK modulation
ich=zeros(1,nb/delta_T/2);
for i=1:nb/2
ich((i-1)/delta_T+1:i/delta_T)=idata(i);
end

... ...

[file tail]:
... ...
on
idata2=s1.*a;
qdata2=s1.*b; > multiply carrier

idata3=zeros(1,nb/2);
qdata3=zeros(1,nb/2);
for n=1:nb/2
if sum(idata2((n-1)/delta_T+1:n/delta_T))>=0
idata3(n)=1;
else idata3(n)=0;
end
if sum(qdata2((n-1)/delta_T+1:n/delta_T))>=0
qdata3(n)=1;
else qdata3(n)=0;
end
end > integral and decision

> P/S conversion
demodata=zeros(1,nb);
demodata(1:ml:(nb-1))=idata3;
demodata(2:ml:nb)=qdata3;

> calculate number of error
num_BER=sum(abs(demodata-data))

> plot commends

figure(1)
plot(data1),title('baseband signal');
figure(2)
pwelch(data1,[],[],[],200),title('baseband signal power spectrum');
figure(3)
plot(s),title('modulated signal');
axis([0 500 -6 6])
figure(4)
pwelch(s,[],[],[],200),title('modulated signal power spectrum');
figure(5)
plot(s1),title('AWGN output signal');
axis([0 500 -6 6]);
figure(6)
pwelch(s1,[],[],[],200),title('output siganl power spectrum');