该方案解决了传统单门限对噪声不确定性敏感的问题。
一、算法原理
1、信号模型
- H0H_0H0(频谱空闲) :y(n)=w(n)y(n) = w(n)y(n)=w(n)
- H1H_1H1(频谱占用) :y(n)=h⋅s(n)+w(n)y(n) = h \cdot s(n) + w(n)y(n)=h⋅s(n)+w(n)
2、能量统计量
T(y)=∑n=1N∣y(n)∣2 T(y) = \sum_{n=1}^{N} |y(n)|^2 T(y)=n=1∑N∣y(n)∣2
3、双门限判决规则
| 能量 T(y)T(y)T(y) | 判决结果 |
|---|---|
| T<λ1T < \lambda_1T<λ1 | 空闲 (H0H_0H0) |
| λ1≤T≤λ2\lambda_1 \le T \le \lambda_2λ1≤T≤λ2 | 不确定区 |
| T>λ2T > \lambda_2T>λ2 | 占用 (H1H_1H1) |
二、MATLAB 核心仿真代码
double_threshold_ed.m
matlab
clc; clear; close all;
%% 1. 仿真参数
N = 1024; % 采样点数(感知周期)
SNR_dB = -20:2:10; % 信噪比范围 (dB)
Mc = 5000; % 蒙特卡洛次数
% 双门限设置(基于噪声功率归一化)
lambda_low = 0.8; % 低门限
lambda_high = 1.5; % 高门限
Pd = zeros(size(SNR_dB)); % 检测概率
Pf = zeros(size(SNR_dB)); % 虚警概率
%% 2. 主循环
for i = 1:length(SNR_dB)
count_pd = 0;
count_pf = 0;
for m = 1:Mc
% --- H0: 仅噪声 ---
noise_h0 = randn(N,1) + 1j*randn(N,1);
energy_h0 = sum(abs(noise_h0).^2) / N;
% --- H1: 信号+噪声 ---
signal = sqrt(1/2) * randn(N,1); % BPSK信号
rx = awgn(signal, SNR_dB(i), 'measured');
energy_h1 = sum(abs(rx).^2) / N;
% --- 虚警概率 (H0下判为1) ---
if energy_h0 > lambda_high
count_pf = count_pf + 1;
end
% --- 检测概率 (H1下判为1) ---
if energy_h1 > lambda_high
count_pd = count_pd + 1;
end
end
Pd(i) = count_pd / Mc;
Pf(i) = count_pf / Mc;
end
%% 3. 绘图
figure('Color','white','Position',[100 100 600 400]);
plot(SNR_dB, Pd, 'b-o', 'LineWidth', 2); hold on;
plot(SNR_dB, Pf, 'r--s', 'LineWidth', 2);
grid on;
xlabel('SNR (dB)');
ylabel('Probability');
legend('P_d (Detection)', 'P_f (False Alarm)');
title('双门限能量检测性能');
set(gca, 'FontSize', 12);
三、噪声不确定性的自适应门限
在实际硬件(如 STM32 + ADC)中,噪声功率会波动,建议使用自适应门限:
matlab
% 假设噪声功率估计为 sigma_w2
sigma_w2 = 1.0;
delta = 0.1; % 噪声不确定性因子 (±10%)
lambda_low = sigma_w2 * (1 - delta);
lambda_high = sigma_w2 * (1 + delta);
四、三种判决输出
matlab
function decision = spectrum_decision(T, lambda_low, lambda_high)
if T < lambda_low
decision = 0; % 空闲
elseif T > lambda_high
decision = 1; % 占用
else
decision = -1; % 不确定(请求协作感知)
end
end
参考代码 认知无线电中基于能量检测的双门限频谱检测研究 www.youwenfan.com/contentcsu/63582.html
五、性能对比(单门限 vs 双门限)
| 指标 | 单门限 | 双门限 |
|---|---|---|
| 抗噪声波动 | 差 | 强 |
| 虚警率 | 高 | 低 |
| 实现复杂度 | 低 | 中 |
| 适用场景 | 实验室 | 实际 CR 网络 |
六、扩展功能
协作频谱感知 (多用户融合)
ROC 曲线 (PdP_dPd vs PfP_fPf)
AWGN / Rayleigh / Rician 信道
FPGA/STM32 定点化实现