检测性能的蒙特卡洛仿真-检测部分

article/2025/4/22 1:16:12

一、 实验目的

使用matlab编程,利用蒙特卡洛方法,对一个简单的二元假设检验问题进行仿真,分析不同信噪比下检测器的性能。

二、 实验步骤

通过蒙特卡洛仿真实验,检测性能在不同信噪比下的表现,以验证信噪比对于检测性能的影响。

实验步骤:

1. 设置随机数种子为0,定义参数N=20,M=5000,A=1,SNR = [-15,-10,-5,0,5]。

2. 根据信噪比计算噪声方差sig2,其中SNR = 101og10(A. 2/sig2)。

3. 对于每个信噪比SNR,进行M次实验。

4. 对于每次实验,生成随机噪声n,计算H0下的GLR值和H1下的GLR值。

5. 对于H0下的GLR值,按照升序排序,并计算出不同Pfa下的阈值T。

6. 对于每个阈值T,计算出Pd值,绘制Pfa-Pd曲线。

7. 重复以上步骤,绘制不同信噪比下的Pfa-Pd曲线。

三、 实验原理

3.1 假设检验

假设检验问题是指根据观测数据,判断某个未知参数或状态属于两个或多个可能的假设中的哪一个。本实验考虑一个二元假设检验问题,即只有两个假设:H0和H1。

假设观测数据为x,它是一个长度为N的向量,每个元素都是一个随机变量。

在H0假设下,x只包含高斯白噪声n;

在H1假设下,x包含一个恒定幅值为A的信号和高斯白噪声n。即:

其中,n服从均值为0,方差为σ2的高斯白噪声。

我们观测到N个采样点x = ( x1 , x2 , . . . , xN ),并且假设A和σ 2都是未知参数。那么,在H0和H1下,x的概率密度函数分别为:

    根据GLRT的原理,我们需要找到使似然函数最大化的参数Aσ2 ,并计算两个假设下的最大似然函数值Λ0 ​和Λ1 ​

那么,广义似然比(GLR)就是Λ0 ​和Λ1 ​之比,即

为了进行二元假设检验,我们需要设置一个阈值T,使得当GLR>T时判决为H0成立,否则判决为H1成立。这样,我们就可以计算在给定阈值T下,发生假警和漏警的概率。

虚警概率(Pfa)是指在H0成立时错误地判决为H1成立的概率;

漏警概率(Pmd)是指在H1成立时错误地判决为H0成立的概率;

检测概率(Pd)是指在H1成立时正确地判决为H1成立的概率,即Pd=1-Pmd。

由于x是随机变量,所以GLR也是随机变量。因此,在理论上很难求出Pfa和Pd与T之间的精确关系。这时候,我们就可以利用蒙特卡洛仿真方法来进行数值模拟。

四、matlab实现

% 设定随机数种子为0,保证每次运行结果一致

randn ('seed', 0);

% 信号长度

N=20;

% 模拟次数

M=5000;

% 信号幅值

A=1;

% 信噪比(dB

SNR = [-15,-10,-5,0,5];

% 计算信噪比对应的方差

sig2 = A.^2./(10.^(SNR/10));

% 遍历不同信噪比

for k =1: length (SNR)

    % 模拟M

    for i=1:M

        % 生成高斯白噪声(H0

        n = sig2(k)*randn(1, N);

        x0 = n;

        u0 = mean (x0);

        % 估计H0下的信号方差

        Sig_H0 = 1/N*sum(x0.^2);

        % 估计H1下的信号方差(MLE方法)

        Sig_H1 = 1/N*sum((x0-u0).^2);

        % 计算GLR统计量(H0下)

        GLR0(i)=Sig_H0/Sig_H1;

       

        % 生成有信号的高斯白噪声(H1

        x1=A+n;

        u1=mean(x1);

        % 估计H0下的信号方差

        Sig_H0 = 1/N*sum(x1.^2);

        % 估计H1下的信号方差(MLE方法)

        Sig_H1 = 1/N*sum((x1-u1).^2);

        % 计算GLR统计量(H1下)

        GLR1(i) =Sig_H0/Sig_H1;

    end

    % 生成Pfa的取值范围

    Pfa=linspace (10^-3,1,300);

    % GLR0进行降序排序

    GLR0=sort(GLR0,'descend');

    % 计算阈值T

    T=GLR0(ceil (Pfa*M));

    % 计算Pd

    for i=1:length(T)

        Pd(i) =length (find (GLR1>T(i)))/M;

    end

    % 绘制ROC曲线

    semilogx(Pfa, Pd,'r*')

    hold on

    xlabel ('Pfa');

    ylabel ('Pd');

end

五、实验结果

通过蒙特卡洛仿真实验,得到了不同信噪比下的Pfa-Pd曲线,如下图所示,从图中可以看出,随着信噪比的增加,Pd值逐渐增加,Pfa值逐渐减小,检测性能逐渐提高。

图 5-1 pfa-pd曲线图


http://chatgpt.dhexx.cn/article/muuuCng4.shtml

相关文章

5G仿真-蒙特卡洛仿真方法

5G仿真-蒙特卡洛仿真方法 #蒙特卡洛仿真法 蒙特卡洛方法也称为统计试验方法,它是采用统计的抽样理论来近似求解数学问题或物 理问题,它即可以求解概率问题,也可以求解非概率问题,蒙特卡洛方法是系统模拟的重要方法。下面举例说明…

talemu---蒙特卡洛仿真软件产品介绍

一 简介 talemu是拥有独立知识产权的国产软件,核心功能是进行蒙特卡洛仿真。通过应用多项自研成果,能够对主流开发语言编写的模型自动创建蒙特卡洛仿真模型,还能够对依赖特定软硬件环境的模型创建仿真模型。依据模型自动生成仿真数据并完成蒙…

蒙特卡罗仿真(1):入门求生指南(Python实例)

目录 1. 前言 1.1 两个要点 1.2 Simulation pros and con’s[2] 2. 随机数生成 3. 几个简单的应用 3.1 抛硬币实验 3.2 扔骰子实验 3.3 用蒙特卡罗仿真求pi值 3.4 估计定积分的值​​​​​​​ 4. 小结 1. 前言 仿真(Simulation):…

武器系统仿真技术(二):末端制导系统蒙特卡洛仿真法

1.蒙特卡洛仿真方法的统计特性 假设一个 m m m个系统输出数据 { y i } i 1 m \{y_i\}_{i1}^m {yi​}i1m​, N N N次循环得到 N N N组数据 { { y i } i 1 m } j 1 N \{\{y_i\}_{i1}^m\}_{j1}^N {{yi​}i1m​}j1N​。那么实际上会有以下两组统计特性指标: 1.2数值…

检测性能的蒙特卡洛仿真-估计部分

一、 实验目的 使用matlab编程,利用蒙特卡洛方法,对一个简单的二元假设检验问题进行仿真,分析不同信噪比下检测器的性能,分析SNR、MSE对估计的影响。 二、 实验步骤 通过蒙特卡洛仿真实验,检测性能在不同信噪比下的…

cadence的工艺角仿真、蒙特卡洛仿真、PSRR

cadence的工艺角仿真、蒙特卡洛仿真、PSRR 工艺角仿真打开ADE XL选择工艺角为ff设置工艺角 蒙特卡洛仿真PSRR温度扫描 学习来源:https://www.bilibili.com/video/BV1gX4y1g7JJ?spm_id_from333.337.search-card.all.click 工艺角仿真 打开ADE XL 当你在ADEL完成仿…

雅可比迭代法法

雅可比迭代法法 在图形图像中很多地方用到求矩阵的特征值和特征向量,比如主成分分析、OBB包围盒等。编程时一般都是用数值分析的方法来计算,这里介绍一下雅可比迭代法求解特征值和特征向量。雅可比迭代法的原理,网上资料很多,详细…

雅可比迭代法和高斯赛德尔迭代法

刚学 Jacobi算法和Gauss_Siedel算法不久&#xff0c;觉的对以后学习会有帮助&#xff0c;所以记下来&#xff0c;希望感兴趣的朋友共勉&#xff01; 雅克比迭代 #include < iostream > #include " math.h " using namespace std; #define n 3 double a[n][n] …

数值计算——雅可比迭代法解线性方程组

1.雅克比迭代法的计算过程: (1).取初始向量: &#xff08;1&#xff09; (2).迭代过程 &#xff08;2&#xff09; 2.求解实例&#xff1a; &#xff08;3&#xff09; 用 Jacobi 方法求解&#xff0c;精确到小数点后 6 位, 给出所需步数及残差; 3.求解结果&#xff1a; 当n1…

雅可比迭代法、高斯-赛德尔迭代法、超松弛迭代法 matlab 实现

雅可比迭代法、高斯-赛德尔迭代法、超松弛迭代法 matlab 实现 一、雅可比迭代法 程序代码&#xff1a; function y Jacobi(A,b,e,M) % input: A 的对角线元素均不为 0 e: 精度 M: 最大计算次数 % output: y: 方程的解n length(A); x0 zeros(n,1); y zeros(n,1);[l,w] si…

数值计算——雅可比迭代法解线性方程组(附代码)

1.雅克比迭代法的计算过程: (1).取初始向量: &#xff08;1&#xff09; (2).迭代过程 &#xff08;2&#xff09; 2.求解实例&#xff1a; &#xff08;3&#xff09; 用 Jacobi 方法求解&#xff0c;精确到小数点后 6 位, 给出所需步数及残差; 3.求解结果&#xff1a; 当n1…

雅可比迭代法程序c语言,求雅可比迭代法解方程组的C\C++程序

满意答案 singleycf 2013.07.05 采纳率&#xff1a;54% 等级&#xff1a;13 已帮助&#xff1a;7908人 #include #include Jacobidiedai(int n, double *a, double *b,double *x) { int i,j; double *x0,m0,eps; x0 (double *) malloc(n*sizeof(double)); for(i0;i x0[i]x…

雅可比迭代法解线性方程组。

L U分解在我之前写的文章里。 定义的变量有点多&#xff0c;但挺容易看的。 #include<stdio.h> #include<math.h> #define N 3 int main (void) {double A[N][N] {0};double D[N][N] {0};double L[N][N] {0};double U[N][N] {0};double C[N][N] {0};double…

线性方程组迭代法—雅克比迭代法C++

此例子使用三个变量、三个方程的情况&#xff0c;如需讨论多个的情况&#xff0c;使用vector稍加修改即可。 使用的方程组如下&#xff1a; 每次迭代的值如下&#xff1a; 程序流程图&#xff1a; 程序代码&#xff1a; /********雅克比迭代法********* *1.Xi为每一步迭代…

《数值分析》-- 雅可比迭代法、高斯—塞德尔迭代法

文章目录 一、基本迭代法的格式及收敛性1.1 迭代法思想1.2 向量序列收敛的定义 二、迭代法的收敛与发散三、雅可比迭代法和高斯赛德尔迭代法3.1 雅可比迭代法3.2 高斯――赛得尔(Gauss-Seidel)迭代法 四、迭代法的收敛性4.1 严格对角占优矩阵与对角占优矩阵4.2 Jacobi迭代法和G…

雅克比迭代法,高斯赛德尔迭代法,sor迭代法(python)

计算方法实验&#xff0c;在已给matlab的程序基础上进行修改得到的python程序&#xff0c;原理不再赘述。实际使用时&#xff0c;只需修改以下程序中的A,b矩阵&#xff08;注意只适用与A为n*n的情况&#xff09; 1.雅克比迭代法 import numpy as npA np.array([[10,-1,-2],[…

C语言实现雅克比迭代法求根

C语言实现雅克比迭代法求根 雅克比迭代法求根 C语言实现雅克比迭代法求根问题描述算法思想C语言程序实验结果 问题描述 设方程组 A x b Ax b Axb的系数矩阵 A A A非奇异 &#xff0c;且 a i i ≠ 0 {a_{ii}} \ne 0 aii​​0将 A A A分裂为&#xff1a; A D L U A D L…

雅克比迭代法和高斯-塞德尔迭代法

https://wenku.baidu.com/view/ac6a0d89d0d233d4b04e6905.html 另外附上迭代收敛的条件&#xff1a; 且越小&#xff0c;收敛的越快。

雅可比迭代法

雅可比迭代法 设有线性方程组 &#xff08;1&#xff09; 其矩阵形式为 设系数矩阵A为非奇异矩阵&#xff0c;且 从式(1)的第个方程中解出&#xff0c;得其等价形式 (2) 取初始向量 对式(2)应用迭代法&#xff0c;建立相应的迭代公式 (3) 也可记为矩阵形式 (4) 若将系数…

数值分析-雅克比迭代法

雅克比迭代法 雅克比迭代法就是众多迭代法中比较早且较简单的一种&#xff0c;其命名也是为纪念普鲁士著名数学家雅可比。雅克比迭代法的计算公式简单&#xff0c;每迭代一次只需计算一次矩阵和向量的乘法&#xff0c;且计算过程中原始矩阵A始终不变&#xff0c;比较容易并行计…