• 基于Matlab计算经典CFAR阈值


    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

    🍎个人主页:Matlab科研工作室

    🍊个人信条:格物致知。

    更多Matlab仿真内容点击👇

    智能优化算法  神经网络预测 雷达通信  无线传感器

    信号处理 图像处理 路径规划 元胞自动机 无人机  电力系统

    ⛄ 内容介绍

    基于Matlab计算经典CFAR阈值

    ⛄ 完整代码

    function T = calcCFARthreshold(nTest, nRef, thePFA)

    % calculates classical radar CFAR threshold for 0-mean AWGN

    % classical Neyman-Pearson detection threshold for radar detection

    % under additive Gaussian white noise criterion and specifid false alarm

    % probability.

    % the threshold T is calculated such that under the noise-only condition

    % 计算0均值AWGN的经典雷达CFAR阈值

    % 雷达检测的经典Neyman-Pearson检测阈值

    % 在加性高斯白噪声准则和特定的虚警概率下

    % 仅在噪声条件下计算阈值T

    % prob(Ptest > T * Pref) <= pfa                        Eq(1)公式1

    %

    % where Ptest is the sum of normed-squares of the nTest cells

    %       Pref  is the sum of normed-squares of the nRef cells

    %       pfa is the required maximum type-I (aka false alarm prob) error

    %其中:Ptest是nTest单元的标准平方和,Pref是nRef单元的标准平方和,pfa是所需的最大类型-I(又名虚警概率)误差

    %

    % inputs: nTest  - the number of noise-only test cells

    %         nRef   - the number of noise-only reference cells

    %         thePfA - maximum probability such that 

    %                  prob(Ptest/Pref > T) <= pfa         Eq(2)

    %                  This is equivalent to Eq(1) 

    %inputs:nTest  - 仅噪声测试单元的数量

    %        nRef  - 仅噪声参考单元的数量

    %        thePfA  - 这样的最大概率prob(Ptest / Pref> T)<= pfa Eq(2)相当于方程(1)

    % demo:  calcCFARthreshold;  % no inputs

    %demo: 计算0均值AWGN的经典雷达CFAR阈值;%无输入

    % the classical CFAR processor compares the total power in nTest cells

    % to the power in nRef cells. The threshold T is selected so that the 

    % ratio of Eq(2) is satisfied. it is assumed that the both sets' cells

    % contain only thermal (AWGN) noise. If this ratio exceeds T, it assumed a 

    % radar target exists. The probability that only noise exceeds T is given 

    % by the threshold T (usually on the order of 10^-4 to 10^-7). 

    %经典CFAR处理器将nTest单元中的总功率与nRef单元中的功率进行比较。

    %选择阈值T使得满足Eq(2)(公式2)的比率。

    %假设两组'单元仅包含热(AWGN)噪声。

    %如果该比率超过T,则假定存在雷达目标。

    %仅噪声超过T的概率由阈值T给出(通常在10 ^ -4到10 ^ -7的数量级)。

    % michaelB brost. as usual, fully sharable under GPLv3

    % michaelB brost. 像往常一样,在GPLv3下完全可以共享

    % demo

    if(nargin == 0),%nargin是用来判断输入变量个数的函数:如果输入变量的数目为0

        nTest = 10; %仅噪声测试单元个数

        nRef  = 25; %仅噪声参考单元的数量

        thePFA = 1e-4;%方程2:“prob(Ptest/Pref > T) <= pfa”的最大概率,方程2等效与方程1“prob(Ptest > T * Pref) <= pfa”

        T = calcCFARthreshold(nTest, nRef, thePFA);

        doTest(nTest, nRef, thePFA, T);

        clear('T');

        return;

    end

    % requires the statistics toolbox需要统计工具箱

    T = finv(1 - thePFA, nTest, nRef) * nTest / nRef;

    return

    function doTest(nTest, nRef, thePfa, T)

    % simple test of threshold calc阈值计算的简单测试

    nPt   = min(1e5, ceil(50/thePfa));

    nIter = 15;

    nHit  = zeros(nIter, 1);

    wHnd = waitbar(0, '');

    for k1=1:nIter

        % test set noise power测试设置噪声功率

        testPower = sum(randn(nPt, nTest).^2, 2);

        % reference set noise power参考设定噪声功率

        refPower = sum(randn(nPt, nRef).^2, 2);

        

        % test

        index = find(testPower >= (T .* refPower)); 

        % >(大于),>=(大于等于),<(小于),<=(小于等于), ==(等于),~=(不等于)

        % count up contacts 计数

        nHit(k1) = length(index);

        

        waitbar(k1/nIter, wHnd, sprintf('PFA simulation iteration %d of %d', k1, nIter));

       

    end

    close(wHnd);

    pHit = nHit / nPt;

    figure;

    stem(pHit);

    ylabel('P_F_A');

    xlabel('runs');

    pfaAvg = mean(pHit);

    pfaStd = sqrt(var(pHit));

    title(sprintf(...

        'calculated average pfa: %5.3e, 1-sigma: %5.3e (design: %5.2e)\n', ...

        pfaAvg, pfaStd, thePfa));

    hold on;

    lHnd = line([1, nIter], [thePfa, thePfa]);

    set(lHnd, 'color', 'k');

    lHnd = line([1, nIter], [pfaAvg, pfaAvg]);

    set(lHnd, 'color', 'b');

    lHnd = line([1, nIter], [thePfa, thePfa] - pfaStd);

    set(lHnd, 'color', 'r');

    lHnd = line([1, nIter], [thePfa, thePfa] + pfaStd);

    set(lHnd, 'color', 'r');

    legend('simulated PFA', 'specified PFA', 'mean PFA', '1 \sigma limits', ...

    'location', 'south');

    set(gca, 'xlim', [0, nIter+1]); 

    ⛄ 运行结果

    ⛄ 参考文献

    ⛄ Matlab代码关注

    ❤️部分理论引用网络文献,若有侵权联系博主删除

    ❤️ 关注我领取海量matlab电子书和数学建模资料

     

  • 相关阅读:
    【Java成王之路】EE初阶第二十篇: 前端三剑客 JavaScript 基础语法篇
    钉钉老单据改造-前端操作手册(以保证金登记为例)
    虚拟机Linux-Centos系统网络配置常用命令+Docker 的常用命令
    SAT DPLL CDCL
    【MySQL 安装】基本操作命令
    固定资产管理措施怎么写
    【JavaScript面试】数组的forEach()方法总结
    Vue动手实践p110和p107小试牛刀
    基于yolov5模型的目标检测蒸馏(LD+KD)
    英诺伟再冲刺港交所上市:上半年利润下降77%,严航为董事长兼CEO
  • 原文地址:https://blog.csdn.net/qq_59747472/article/details/128008788