Matlab:绘制简单能量的接收机工作特性曲线(Energy_detection_simulation_ok)

Matlab:绘制简单能量的接收机工作特性曲线(Energy_detection_simulation_ok)


输出结果

实现代码

% This code is to plot receiver operating characteristic curve for simple energy
%绘制简单能量的接收机工作特性曲线
% detection, when the primary signal is real Gaussian signal and noise is
% addive white real Gaussian. Here, the threshold is available
% analytically.
% Code written by: Sanket Kalamkar, Indian Institute of Technology Kanpur,
% India.

%% 以下代码绘制在虚警概率一定时,检测概率和信噪比之间的关系曲线称为检测器的检测性能曲线
clc
close all
clear all
L = 1000;                                             % The number of samples
snr = 0.01:0.01:10;
Pf = 10e-4;                                           % Pf = Probability of False Alarm 虚警概率确定
%% Simulation to plot SNR vs.Probability of Detection (Pd)
for m = 1:length(snr)
    i = 0;
    thresh = (qfuncinv(Pf)./sqrt(L))+ 1;              % Theoretical value of Threshold, refer, Sensing-Throughput Tradeoff for Cognitive Radio Networks, Y. C. Liang
    for kk = 1:5000                                   % Number of Monte Carlo Simulations(https://cn.mathworks.com/discovery/monte-carlo-simulation.html)
        n = randn(1,L);                               % AWGN noise with mean 0 and variance 1
        s = sqrt(snr(m)).*randn(1,L);                 % Real valued Gaussina Primary User Signal
        y = s + n;                                    % Received signal at SU(认知用户接收到的信号)
        energy = abs(y).^2;                           % Energy of received signal over N samples
        energy_fin =(1/L).*sum(energy);               % Test Statistic for the energy detection
        if(energy_fin >= thresh)                      % Check whether the received energy is greater than threshold, if so, increment Pd (Probability of detection) counter by 1
            i = i+1;
        end
    end
    Pd(m) = i/kk;
end
plot(10*log(snr), Pd,  'r')
xlabel('信噪比,单位db');
ylabel('检测概率');
title('能量感知检测性能曲线');
grid on
hold on
%% Theroretical expression of Probability of Detection; refer above reference.
thresh = (qfuncinv(Pf)./sqrt(L))+ 1;
%Pd_the = qfunc(((thresh - (snr + 1)).*sqrt(L))./(sqrt(2).*(snr + 1))); % 原来代码中的表达与论文中不一致
for k = 1:length(snr)
    Pd_the(k) = qfunc(((thresh - (snr(k) + 1)).*sqrt(L))./(sqrt(2).*snr(k) + 1)); % 与论文中的方程式保持一致
end
plot(10*log(snr), Pd_the, 'b')
legend('实际检测概率', '理论检测概率', 'Location', 'SouthEast');
hold on
grid on
(0)

相关推荐

  • 最佳工程实践:优化并联离心泵系统

    前言 当多台离心泵作为并联泵送系统的一部分连续运行时,可能会有显著节能的机会.例如,当单台泵可以满足工艺流量要求时,系统中的主泵和备用泵经常一起运行.这可能源于一种常见的误解,即并联运行两台相同的泵会 ...

  • 中药的能量药理

    Energy Pharmacology of Traditional Chinese Medicine DOI: 10.12677/TCM.2020.96077, PDF, HTML, XML 作者: ...

  • 547 热泵论文摘选2019-1

    [1]张鹏霞,等.自控热泵柿饼烘干房及快速干制出霜工艺研究[J].包装与食品机械. [2]蔡国伟,等.基于SCA分解法的含电热泵和储热装置的热电联调[J].太阳能学报. [3]赵瑜,等.低环境温度空气 ...

  • (3条消息) matlab 绘制 ROC曲线

    编程题目接收操作特征(Receiver Operating Characteristic,ROC)曲线,即通常所讲的ROC Curve,是机器学习领域中常用的分类性能评估曲线,横轴是False Pos ...

  • 在攻打棱堡之前,绘制地图是一项必要的工作...

    在攻打棱堡之前,绘制地图是一项必要的工作.一名经验丰富的军事工程师仅需一天时间即可绘制一幅简易但有效的地图.其绘制方式如下: A代表将要攻打的棱堡 B为工程师所处的位置,AB之间的距离约为一门半加农炮 ...

  • 世界上最简单的三种工作

    2021-03-10 14:24 世界上最简单的三种工作 采铜的创想世界© 本文来自微信公众号:采铜的创想世界(ID:CTDT4US),作者:采铜,头图来源:<安家> 世界上最简单的工作, ...

  • MATLAB绘制B样条曲线

    MATLAB绘制B样条曲线

  • 简单是长期努力工作的结果,而不是起点

    ▍简单是长期努力工作的结果,而不是起点.--弗里德里克·迈特兰德 Startup 长久以来,我坚信存在某个系统,一个几乎所有聪明人都能掌握的系统,它比绝大多数人用的系统管用.你需要的是在你的头脑里形成 ...

  • ArcGIS中用几行简单Python代码解决工作中字段计算问题

    原创 小祝 GIS前沿 2021-08-26 因为文本赋值或者进行加减法赋值固定位数的时候比较困难,使用这个代码的话就可以在文本型字段下进行9位数的流水号赋值: max = 121 #从某个号开始流水 ...

  • Matlab绘制包含双Y轴的图

    之前写硕士论文的时候需要同时对比相位图和幅值图,故需要绘制包含双Y轴的图 绘制数据对左侧 y 轴的图 创建左右两侧都有 y 轴的坐标区.yyaxis left 命令用于创建坐标区并激活左侧.后续图形函 ...

  • Origin教程第二章 使用origin绘制简单二维图

    一般来说数据按照X Y坐标存为两列,假设文件为sindata.dat,如下格式: X   sin(x) 0.0  0.000 0.1  0.100 0.2  0.199 0.3  0.296 ---- ...

  • 办公PS技巧14:如何用PS绘制简单的图形或图案?学会马上举一反三

    如何用PS绘制一个简单的图形或图案? 因为绘制过程中知识点比较多,所以我将用最直白的语言去解释. 当你学会这三个图形后,很快就能举一反三(如图) 01 02 03 我将尽可能的让你一看就明白,所以在学 ...