【频带传输】数字频带传输系统之不同调制方式的误码率与频谱特性总结

1.软件版本

MATLAB2017b

2.算法结论分析

       数字频带传输系统的设计与仿真,使用matlab编写了一个数字频带传输系统,分别实现2ASK、2FSK、2PSK、2DPSK、4ASK、4FSK、4PSK、4DPSK、QPSK,以及4QAM、16QAM和MSK、GMSK这些调制和解调过程。

2ASK,2FSK,2PSK,2DPSK四个二进制的仿真结论如下所示:

 

 

 4ASK,4FSK,4PSK,4DPSK四个四进制的仿真结论如下所示:

 

 

 

 QPSK,4QAM,16QAM三个仿真结果如下所示:

 

 

 

 MSK,GMSK两个个仿真结果如下所示:

 

3.部分源码

clc;
clear all;
close all;
warning off;

Fd=1;  %信号数据率
Fc=4;  %载波频率
Fs=16; %调制信号的采样频率
N=Fs/Fd; 
M=4;   %二进制
k=log2(M); %比特数
SNRpBit=0:2:16; %设置仿真信噪比的范围(dB/bit)
SNR=SNRpBit+10*log10(k);  %dB/符号
r=10.^(SNRpBit(:).*0.1); %信噪比(线性的)
symPerIter=2048; %每次迭代符号的次数
iters=50;          %迭代次数
numSymbTot=symPerIter*iters; 
grayencod=bitxor([0:M-1],floor([0:M-1]/2));
[dummy graydecod]=sort(grayencod);
graydecod=graydecod-1;
for(idx2=[1:length(SNR)])
    idx=1;
    idx2
    while((idx<=iters))
        %创建信号及Gray编码
        msg_orig=randsrc(symPerIter,1,[0:M-1]);
        %Gray编码
        msg_gr_orig=grayencod(msg_orig+1)';   
        %2ASK
        msg_tx1=dmod(msg_gr_orig,Fc,Fd,Fs,'ask',M);   %数字带通调制
        msg_rx1=awgn(msg_tx1,SNR(idx2)-10*log10(0.5*N),'measured',[],'dB'); %对调制信号添加高斯白噪声,由于是带通信号,所以噪声功率只有一半
        msg_gr_demod1=ddemod(msg_rx1,Fc,Fd,Fs,'ask',M); %解调带通调制信号
        msg_demod1=graydecod(msg_gr_demod1+1)';       %Gray码解码  
        [errBit1(idx) ratBit1(idx)]=biterr(msg_orig,msg_demod1,k); %计算本次迭代的BER
        %2FSK
        msg_tx2=dmod(msg_gr_orig,Fc,Fd,Fs,'fsk',M);
        msg_rx2=awgn(msg_tx2,SNR(idx2)-10*log10(0.5*N),'measured',[],'dB');
        msg_gr_demod2=ddemod(msg_rx2,Fc,Fd,Fs,'fsk',M);
        msg_demod2=graydecod(msg_gr_demod2+1)';        
        [errBit2(idx) ratBit2(idx)]=biterr(msg_orig,msg_demod2,k);
        %2PSK
        msg_tx3=dmod(msg_gr_orig,Fc,Fd,Fs,'psk',M);
        msg_rx3=awgn(msg_tx3,SNR(idx2)-10*log10(0.5*N),'measured',[],'dB');
        msg_gr_demod3=ddemod(msg_rx3,Fc,Fd,Fs,'psk',M);
        msg_demod3=graydecod(msg_gr_demod3+1)';        
        [errBit3(idx) ratBit3(idx)]=biterr(msg_orig,msg_demod3,k);
        %2DPSK
        msg_tx4=dpskmod(msg_gr_orig,M);
        msg_rx4=awgn(msg_tx4,SNR(idx2)-10*log10(0.5*N),'measured',[],'dB');
        msg_gr_demod4=dpskdemod(msg_rx4,M);
        msg_demod4=graydecod(msg_gr_demod4+1)';        
        [errBit4(idx) ratBit4(idx)]=biterr(msg_orig,msg_demod4,k);
        idx=idx+1; 
    end
    %计算各次迭代后的平均BER
    ratio1(idx2,1)=[mean(ratBit1)];
    ratio2(idx2,1)=[mean(ratBit2)];
    ratio3(idx2,1)=[mean(ratBit3)];
    ratio4(idx2,1)=[mean(ratBit4)];
end

figure;
subplot(121);
semilogy(SNRpBit([1:size(ratio1(:,1),1)]),ratio1(:,1),'b-o');
grid on;
xlabel('SNR(db)');
ylabel('误码率');
legend('仿真的4ASK');
subplot(122);
y0 = abs(fftshift(fft(msg_tx1)));
y1 = abs(fftshift(fft(msg_rx1)));
plot(y1./y0);
legend('频响图');

figure;
subplot(121);
semilogy(SNRpBit([1:size(ratio2(:,1),1)]),ratio2(:,1),'b-o');
grid on;
xlabel('SNR(db)');
ylabel('误码率');
legend('仿真的4FSK');
subplot(122);
subplot(122);
y0 = abs(fftshift(fft(msg_tx2)));
y1 = abs(fftshift(fft(msg_rx2)));
plot(y1./y0);
legend('频响图');
figure;
subplot(121);
semilogy(SNRpBit([1:size(ratio3(:,1),1)]),ratio3(:,1),'b-o');
grid on;
xlabel('SNR(db)');
ylabel('误码率');
legend('仿真的4PSK');
subplot(122);
subplot(122);
y0 = abs(fftshift(fft(msg_tx3)));
y1 = abs(fftshift(fft(msg_rx3)));
plot(y1./y0);
legend('频响图');
figure;
subplot(121);
semilogy(SNRpBit([1:size(ratio4(:,1),1)]),ratio4(:,1),'b-o');
grid on;
xlabel('SNR(db)');
ylabel('误码率');
legend('仿真的4DPSK');
subplot(122);        
subplot(122);
y0 = abs(fftshift(fft(msg_tx4)));
y1 = abs(fftshift(fft(msg_rx4)));
plot(y1./y0);
legend('频响图');

A01-86

猜你喜欢

转载自blog.csdn.net/ccsss22/article/details/125109511