• 大小: 883B
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: Matlab
  • 标签: MATLAB  能量检测  

资源简介

用matlab语言写的能量检测法程序,在高斯信道下进行的检测(检测信道中有无信号)

资源截图

代码片段和文件信息

clear all;
clc;
n =10000;                     %采样点数
pfa = 0.01;                   %虚警概率
snr1=-25:1:0;               %信噪比
k  = length(snr1);
for i = 1:k                 %不同信噪比下仿真
    s = 0;                  %1个数初值设为0,每次循环都清零
    snr(i) = power(10snr1(i)/10);%db转化十进制
    for kk = 1:1         %每种信噪比下仿真次数 
        t = 1/n:1/n:1;              %离散点1000
        x = sin(pi*t);
        x = ( x > 0);                %大于0判为1,否则0,方波产生方法
        x  =2*x-1;                   %信源数据产生
        noise = randn(1length(t));  %均值0方差1的噪声
        pn = (std(noise)).^2;        %噪声功率
        a = sqrt(2*snr(i));       %信号幅值
        xx = a.*sin(2*pi*4*t);       %调制信号    
        y  = x.*xx;                  %bpsk调制信号
        ps = mean(abs(y).^2);        %信号平均功率
        yy = y+noise;                %输出信号
       
        r = (n+sqrt(2*n)*sqrt(2)*erfcinv(2*pfa));
        %r = gaminv(1-pafn/21)*2;
        sum1 = sum(abs(yy).^2);      %输出信号的累积功率
        if sum1>r
            s = s+1;                 %输出大于阈值及判为1,否则0,统计1的个数
        end
    end
 p(i) = s/100;             %检测概率:1的个数/n
pd(i) = 0.5*erfc((erfcinv(2*pfa)-snr(i)*sqrt(n/2))/sqrt(2+4*snr(i)));
%awgn channels
%pd(i) = marcumq(sqrt(snr(i)*2)sqrt(r)n/2);
%pd(i)=pfa+exp(1/((2*n)*(snr(i)^2))-sqrt(2)*erfcinv(2*pfa)/(sqrt(n)*snr(i)))
%rayleigh fading(pfa要很小《0.01)
end
plot(snr1pd‘o-‘);
hold on;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1517  2007-10-23 16:21  energydetection.m

----------- ---------  ---------- -----  ----

                 1517                    1


评论

共有 条评论