MATLAB仿真实现

ERD算法代码实现

文章目录

  • ERD算法代码实现
  • 信号模型
  • ERD算法
  • Threshold 选取
  • 检测率和虚警率计算
  • 参考代码


信号模型

r ( j ) = w R ( j ) s ( j ) + n ( j ) ; j ∈ { 1 , 2 , 3 , . . . N s } r(j) = w_R(j)s(j)+n(j); j\in\{1,2,3,...N_s\} r(j)=wR(j)s(j)+n(j);j{1,2,3,...Ns} 其中 N s N_s Ns为样本量。
w R ( j ) = { 1 ,有突发信号 0 ,无突发信号 w_R(j)=\left\{ \begin{aligned} 1 ,有突发信号 \\ 0 ,无突发信号 \end{aligned} \right. wR(j)={1,有突发信号0,无突发信号

s ( j ) s(j) s(j) 为突发信号, n ( j ) n(j) n(j)为噪声。

ERD算法

L个连续样本作为一个窗口,取相邻的两个窗口。计算窗口内样本的能量。即,
∑ m = k − L k − 1 = ∣ r ( m ) ∣ 2 或 ∑ m = k k + L − 1 = ∣ r ( m ) ∣ 2 \sum_{m=k-L}^{k-1}=|r(m)|^2 或 \sum_{m=k}^{k+L-1}=|r(m)|^2 m=kLk1=r(m)2m=kk+L1=r(m)2
从式子中可以看出当 k k k刚好为突发信号的起始位置或结束位置时,两者的能量差是最大的。当前一个窗口内的能量远小于后一个窗口内能量时,即为突发信号起始位置,反之为突发信号的结束位置。
分别计算相邻两个窗口内的能量值,并计算其比值。即,
E R S ( k ) = ∑ m = k k + L − 1 = ∣ r ( m ) ∣ 2 ∑ m = k − L k − 1 = ∣ r ( m ) ∣ 2 \begin{aligned} ER_S(k)=\frac{\sum_{m=k}^{k+L-1}=|r(m)|^2}{\sum_{m=k-L}^{k-1}=|r(m)|^2} \end{aligned} ERS(k)=m=kLk1=r(m)2m=kk+L1=r(m)2

E R E ( k ) = ∑ m = k − L k − 1 = ∣ r ( m ) ∣ 2 ∑ m = k k + L − 1 = ∣ r ( m ) ∣ 2 \begin{aligned} ER_E(k)=\frac{\sum_{m=k-L}^{k-1}=|r(m)|^2}{\sum_{m=k}^{k+L-1}=|r(m)|^2} \end{aligned} ERE(k)=m=kk+L1=r(m)2m=kLk1=r(m)2
依次增加 k k k值。会得到其比值有如下的形状。
MATLAB仿真实现_第1张图片

Threshold 选取

当到达突发信号起始位置或结束位置时,理论上的比值为
E R S ( k ) = P S × L + P N × L P N × L = 1 + s n r ER_S(k)=\frac{P_S\times L + P_N \times L}{P_N \times L}=1+snr ERS(k)=PN×LPS×L+PN×L=1+snr
其中 snr 为信噪比。
t h r e s h o l d = α ( 1 + s n r ) threshold = \alpha(1+snr) threshold=α(1+snr)
大于 t h r e s h o l d threshold threshold的值保存下来,并找到其中最大的值,标注位置。最后找到 w R ( j ) = 1 w_R(j)=1 wR(j)=1的位置,在wdd相应位置标1,其他位置标0.

检测率和虚警率计算

检测率的计算,在产生信号模型时,记录 s ( j ) s(j) s(j)的正确位置,记为wd。通过比较真实的wd和EDR算法检测出来的wdd值来统计检测率和虚警率。
检测率为突发信号位置检测正确的概率,即
w d d & w d 中 1 的个数 w d d 中 1 的个数 \frac{wdd\&wd中1的个数}{wdd中1的个数} wdd1的个数wdd&wd1的个数
虚警率为
w d d & w d 中 1 的个数 w d d 中 0 的个数 \frac{wdd\&wd中1的个数}{wdd中0的个数} wdd0的个数wdd&wd1的个数

参考代码

erd matlab code
仿真结果图如下
MATLAB仿真实现_第2张图片

你可能感兴趣的:(matlab,算法,开发语言)