⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qpsk_awgn_draw.m

📁 对于QPSK性能分析的源码,最后给除2种信道下的误码率比较图
💻 M
字号:
% 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=0;                        % 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 
data2=abs(fft(data1));
% 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
for ii=1:N/2
    a(ii)=sqrt(2/T)*cos(2*pi*fc*t(ii));
end
idata1=ich.*a;                % I-channel multiply carrier
qch=zeros(1,nb/2/delta_T);
for j1=1:nb/2
    qch((j1-1)/delta_T+1:j1/delta_T)=qdata(j1);
end
for jj=1:N/2
    b(jj)=sqrt(2/T)*sin(2*pi*fc*t(jj));
end
qdata1=qch.*b;               % Q-channel multiply carrier

s=idata1+qdata1;             % QPSK modulated signal
ss=abs(fft(s));
% through AWGN 
s1=awgn(s,SNR);              % received signal
s11=abs(fft(s1));            

% QPSK demodulation
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
h = spectrum.welch;
figure(1)
plot(data1),title('baseband signal');
figure(2)
plot(fftshift(data2)),title('baseband signal spectrum');
figure(3)
psd(h,data1,'fs',fs),title('baseband signal power spectrum');
figure(4)
plot(s),title('modulated signal');
axis([0 1000 -3 3]);
figure(5)
plot(fftshift(ss)),title('modulated signal spectrum');
figure(6)
psd(h,s,'fs',fs),title('modulated signal power spectrum');
figure(7)
plot(s1),title('AWGN output signal');
axis([0 500 -6 6]);
figure(8)
plot(fftshift(s11)),title('output signal spectrum');
figure(9)
psd(h,s1,'fs',fs),title('output siganl power spectrum');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -