【第22期】观点:IT 行业加班,到底有没有价值?

加性高斯白噪声信道(AWGN)下的digital调制格式识别分类

原创 2015年07月11日 00:50:15
%%--------------------------------------------------------------------------
%题目:加性高斯白噪声信道(AWGN)下的digital调制格式识别分类
%实现思路:函数对信号添加了高斯白噪声,并进行带限处理,模拟信道的作用
%输入:
%输出:不同调制格式下识别率关于SNR的函数
%%--------------------------------------------------------------------------



clear all;
close all;
clc;

% signal generation;如果想要进行100组独立的测试,可以建立100次循环,产生100组独立的数据
for j = 1:6  % bit per symbol: 1. PSK; 2. QPSK; 3.8QAM; 4. 16QAM; 5. 32QAM; 6.64QAM;
System.BitPerSymbol = j;
snr = -5:20;  %SNR信噪比的设置,单位dB
correct_rate = zeros(length(snr), 1); %识别正确率
for snrIndex= 1:length(snr)
    correct = 0;

    for i =1:100     %进行100组独立测试
        
        temp = randi([1 6], 1, 1);         %测试随机模式下的识别正确率,不测随机模式时请注释掉
        System.BitPerSymbol = temp(1,1);   %测试随机模式下的识别正确率,不测随机模式时请注释掉
        
        Tx.SampleRate = 32e9; %symbol Rate,信号的码元速率,可以自行定义
        Tx.Linewidth = 0;%发射信号的载波的线宽,一般与信号的相位噪声有关,大小可自行设置,这里暂时设置为0
        Tx.Carrier = 0;%发射信号的载波频率,可自行设置,这里暂设为0
        M = 2^System.BitPerSymbol;
        numberOfData = 10000;
        
        %测试不同数据点在随机模式下的识别正确率,不测时请注释掉
        
        if(j == 1)
            numberOfData = 10000;
        elseif(j == 2)
            numberOfData = 1000;
        elseif(j == 3)
            numberOfData = 100;
        end
        
        Tx.DataSymbol = randi([0 M-1],1,numberOfData);%每一次随机产生的数据量,这里暂时设为数据点个数为10000个

%数据的不同调制方式产生:这里把2^3(8QAM)的形式单独拿出来设置,是为了实现最优的星型8QAM星座图
        if M ~= 8;
            h = modem.qammod('M', M, 'SymbolOrder', 'Gray');
            Tx.DataConstel = modulate(h,Tx.DataSymbol);
        else
            tmp = Tx.DataSymbol;
            tmp2  = zeros(1,length(Tx.DataSymbol));
            for kk = 1:length(Tx.DataSymbol)

                switch tmp(kk)
                    case 0
                        tmp2(kk) = 1 + 1i;
                    case 1
                        tmp2(kk) = -1 + 1i;
                    case 2
                        tmp2(kk) = -1 - 1i;
                    case 3
                        tmp2(kk) = 1 - 1i;
                    case 4
                        tmp2(kk) = 1+sqrt(3);
                    case 5
                        tmp2(kk) = 0 + 1i .* (1+sqrt(3));
                    case 6
                        tmp2(kk) = 0 - 1i .* (1+sqrt(3));
                    case 7
                        tmp2(kk) = -1-sqrt(3);
                end
            end
            Tx.DataConstel = tmp2;
            clear tmp tmp2;
        end


        Tx.Signal = Tx.DataConstel;

        %数据的载波加载,考虑到相位噪声等
        N = length(Tx.Signal);
        dt = 1/Tx.SampleRate;
        t = dt*(0:N-1);
        Phase1 = [0, cumsum(normrnd(0,sqrt(2*pi*Tx.Linewidth/(Tx.SampleRate)), 1, N-1))];
        carrier1 = exp(1i*(2*pi*t*Tx.Carrier + Phase1));
        Tx.Signal = Tx.Signal.*carrier1;


        Rx.Signal = awgn(Tx.Signal,snr(snrIndex),'measured');%数据在AWGN信道下的接收

        CMAOUT = Rx.Signal;

        %normalization接收信号功率归一化
        CMAOUT=CMAOUT/sqrt(mean(abs(CMAOUT).^2));
       
        s = Rx.Signal;
        signalPower = mean(abs(s).^2);
        noisePower = signalPower/(10^(snr(snrIndex)/10));
        C20 = mean(s.^2);
        C21 = mean(abs(s).^2);
        C21 = C21-noisePower;
        C40 = mean(s.^4)-3*C20^2;
        C41=mean((s.^3).*conj(s))-3*C20*C21;
        C42=mean(abs(s).^4)-abs(C20)^2-2*C21^2;
        C40_p=C40/C21^2;
        
        %根据C40_p的取值范围来判断哪种调制格式
        if(abs(C40_p) >= 1.5)
            number = 1;
        elseif(abs(C40_p) >= 0.9 && abs(C40_p) < 1.1)
            number = 2;
        elseif(abs(C40_p) >= 1.1 && abs(C40_p) < 1.3)
            number = 3;
        elseif(abs(C40_p) >= 0.65 && abs(C40_p) < 0.9)
            number = 4;
        elseif(abs(C40_p)<=0.4)
            number = 5;
        elseif(abs(C40_p) > 0.4 && abs(C40_p) < 0.65)
            number = 6;
        end
        if(number == System.BitPerSymbol)
            correct = correct + 1;
        end
    end
    correct_rate(snrIndex) = correct;
 end

figure(j);
if(j == 1)
    plot(snr, correct_rate, 'r.-');
%测试不同数据点时随机模式下的识别正确率,不测时请注释掉
   hold on

elseif(j == 2)
     plot(snr, correct_rate, 'gv-');
elseif(j == 3)
     plot(snr, correct_rate, 'r*-');   
elseif(j == 4)
     plot(snr, correct_rate, 'r.-');
elseif(j == 5)
     plot(snr, correct_rate, 'gv-');
elseif(j == 6)
     plot(snr, correct_rate, 'r*-');
     hold off
end
 
axis([-5 20 0 110]);
xlabel('dB');
ylabel('识别正确率');

%测试不同数据点时随机模式下的识别正确率,不测时请注释掉
legend('N=10000','N=1000','N=100');
title('随机模式识别时不同数据点数量的识别正确率对比')


if(j == 1)
    title('PSK识别正确率');
elseif(j == 2)
    title('QPSK识别正确率');
elseif(j == 3)
    title('8QAM识别正确率');
elseif(j == 4)
    title('16QAM识别正确率');
elseif(j == 5)
    title('32QAM识别正确率');
elseif(j == 6)
    title('64QAM识别正确率');
end



%{
plot(real(Rx.Signal),imag(Rx.Signal),'.');
if(j == 1)
    title('PSK星座图');
elseif(j == 2)
    title('QPSK星座图');
elseif(j == 3)
    title('8QAM星座图');
elseif(j == 4)
    title('16QAM星座图');
elseif(j == 5)
    title('32QAM星座图');
elseif(j == 6)
    title('64QAM星座图');
end
xlabel('实部');
ylabel('虚部');
%}


title('随机模式识别时的识别正确率');%测试随机模式下的识别正确率,不测随机模式时请注释掉

end








版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

信道和调制

信道和调制 1. 信道,从通信的双方信息交互的方式划分 1.1 单向通信 单向通信:又称为单工通信,即只能有一个方向的通信而没有反方向的交互。无线电广播或有线电广播以及电视广播就术语这种类型。 ...

各种调制技术

什么是FDMA? FDMA是数据通信中的一种技术,即不同的用户分配在时隙相同而频率不同的信道上。按照这种技术,把在频分多路传输系统中集中控制的频段根据要求分配给用户。同固定分配系统相比,频分多址使通...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

调制与调制方法分类

转自维基百科

信道 频段 带宽 速率 几点总结

XXX  HZ   可以说成频段,可以说成带宽 第一、信道分为模拟信道和数字信道,模拟信道带宽是由信道本身的特性决定的,它的带宽范围是由信道能够通过的最低频率和信道能够通过的最高频率只差来决定,就以...

信号调制--基带调制和射频调制

我们常说的信号调制(Modulation),其实在不同的语境(Context)下有着不同的意思。不过不只是初入行的员工,一些老鸟有时也常常会搞混淆。 传统上的调制,简单说就是把携带信息的信号,”调制...

7-2通信系统中为什么要进行调制和解调?调制的分类方法有哪些?

通信系统中为什么要进行调制和解调?调制的分类方法有哪些? 概念解释:在通信中,通常会有基带信号和频带信号。基带信号也就是原始信号,通常具有较低的频率成分,不适合在无线信道中进行传输。在通信系统中...

3-2 通信系统中调制和解调的作用及调制的分类方法

在通信系统中,通过调制把信号变成系统传输要求的制式,通过解调还原所需要的信号。调制器用于改变高频载波信号,使得载波信号的振幅、频率或相位与要发送的基带信号相关。解调器的作用则是解调获取到的信号,以重现...

通信信号与系统分析(三 模拟调制)

本篇讨论各种模拟调制与解调系统的性能,包括幅度调制(AM)和角度调制(包括频率调制(FM)和相位调制(PM))。

DVB-C系统中QAM调制与解调仿真

本文简单记录一下自己学习《通信原理》的时候调试的一个仿真DVB-C(Cable,数字有线电视)系统中QAM调制和解调的程序。自己一直是研究“信源”方面的东西,所以对“信道”这方面的知识进行实践的机会一...

4-PSK、4-DPSK、8-QAM信号调制

1、用matlab程序仿真实现:假设消息数据序列经过Gray编码后分别是[1 2 3 0 3 2 1 1],分别画出它们的4-PSK和4-DPSK调制信号波形。假设载波频率为1HZ。 2、用matl...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)